//UI層
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using Entity;
using Business;
namespace 澄星設計
{
public partial class Display_Goods : System.Web.UI.Page
{
static DataTable DT;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["users"] == null)
{
Response.Write("<script>alert(''請先登錄!);parent.window.location.herf='Login.aspx'</script>");
return;
}
//else
//{
// Entity.Users u = (Entity.Users)Session["users"];
// u.UserName = Business.AdminBusiness.GetUserNamebyID(u).ToString();
// this.Label1.Text = "歡迎管理員" + u.UserName + "回來!";
//}
if (!IsPostBack)
{
DT = Business.AdminBusiness.SelectViewGoods();
ViewState["pageindex"] = 0;
this.LoadDataList(DT);
}
}
private PagedDataSource DataListPaging(DataTable dt)
{
DataView dv = dt.DefaultView;
PagedDataSource pds = new PagedDataSource();
pds.DataSource = dv;
pds.AllowPaging = true;
pds.PageSize = 2;
pds.CurrentPageIndex = Convert.ToInt32(ViewState["pageindex"].ToString());
ViewState["pagecount"] = pds.PageCount;
if (pds.IsFirstPage)
{
this.lbtn_pre.Enabled = false;
}
else
{
this.lbtn_pre.Enabled = true;
}
if (pds.IsLastPage)
{
this.lbtn_next.Enabled = false;
}
else
{
this.lbtn_next.Enabled = true;
}
return pds;
}
private void LoadDataList(DataTable dt)
{
this.dl_goods.DataSource = this.DataListPaging(dt);
this.dl_goods.DataBind();
}
protected void lbtn_Click(object sender, EventArgs e)
{
LinkButton lbtn = sender as LinkButton;
string cmda = lbtn.CommandArgument;
int pageindex = Convert.ToInt32(ViewState["pageindex"].ToString());
if (cmda == "pre")
{
pageindex = pageindex - 1;
}
else
{
pageindex = pageindex + 1;
}
ViewState["pageindex"] = pageindex;
this.LoadDataList(DT);
this.tbx_pageindex.Text = (pageindex + 1).ToString();
}
protected void btn_jump_Click(object sender, EventArgs e)
{
int pagenum = Convert.ToInt32(this.tbx_pageindex.Text.Trim());
int pageindex = pagenum - 1;
int pagecount = Convert.ToInt32(ViewState["pagecount"]);
if (pageindex < 0)
{
Response.Write("<script>alert('頁數必須大于0!將回到首頁!')</script>");
pageindex = 0;
}
if (pageindex >= pagecount)
{
Response.Write("<script>alert('頁數不可超過總數!將抵達最后一頁!')</script>");
pageindex = pagenum - 1;
}
ViewState["pageindex"] = pageindex;
this.LoadDataList(DT);
this.tbx_pageindex.Text = (pageindex + 1).ToString();
}
protected void btn_search_Click(object sender, EventArgs e)
{
string gname = this.tbx_gname.Text.Trim();
if (gname == "%%")
{
Response.Write("<script>alert('商品名稱不能為空!')</script>");
return;
}
Entity.Goods g = new Goods();
g.GoodsName="%"+gname+"%";
DT = Business.AdminBusiness.SelectViewGoodsbyGoodsName(g);
this.dl_goods.DataSource = this.DataListPaging(DT);
this.dl_goods.DataBind();
}
protected void ImageButton1_Click1(object sender, ImageClickEventArgs e)
{
ImageButton Ibtn = (ImageButton)sender;
string gid = Ibtn.CommandArgument;
Response.Redirect("~/Detail.aspx?gid=" + gid);
}
}
}
----------------------------------------------------------------------------------------------------------------------------------------------
//DAL層
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace DataAccess
{
public static class DA
{
static SqlConnection myconn;
static SqlCommand scd;
static SqlDataAdapter sda;
static DA()
{
myconn = new SqlConnection();
myconn.ConnectionString = ConfigurationManager.ConnectionStrings["CxConn"].ConnectionString;
scd = new SqlCommand();
scd.Connection = myconn;
sda = new SqlDataAdapter();
}
#region 執行非查詢SQL命令,SQL有無引數均可
/// <summary>
/// 執行非查詢SQL命令,SQL有無引數均可
/// </summary>
/// <param name="cmdtext">SQL命令文本</param>
/// <param name="cmdtype">命令型別</param>
/// <param name="names">引數名稱串列</param>
/// <param name="values">引數名稱對應的引數值串列</param>
/// <returns>int型別,表示受影響的行數</returns>
public static int ExecuteSQL(string cmdtext, CommandType cmdtype, string[] names, object[] values)
{
scd.CommandText = cmdtext;
scd.CommandType = cmdtype;
scd.Parameters.Clear();
if (names != null)
{
for (int i = 0; i < names.Length; i++)
{
scd.Parameters.AddWithValue(names[i], values[i]);
}
}
if (myconn.State == ConnectionState.Closed)
{
myconn.Open();
}
int result = scd.ExecuteNonQuery();
myconn.Close();
return result;
}
#endregion
#region 執行查詢命令,回傳一個DataTable,有無引數均可
/// <summary>
/// 執行非查詢SQL命令,回傳一個DataTable,有無引數均可
/// </summary>
/// <param name="cmdtext">SQL命令文本</param>
/// <param name="cmdtype">命令型別</param>
/// <param name="names">引數名稱串列</param>
/// <param name="values">引數名稱對應的引數值串列</param>
/// <returns>DataTable型別,表示獲得的資料表或記錄的集合</returns>
public static DataTable GetDataTable(string cmdtext, CommandType cmdtype, string[] names, object[] values)
{
sda.SelectCommand = new SqlCommand();
sda.SelectCommand.CommandText = cmdtext;
sda.SelectCommand.CommandType = cmdtype;
sda.SelectCommand.Connection = myconn;
if (names != null)
{
for (int i = 0; i < names.Length; i++)
{
scd.Parameters.AddWithValue(names[i], values[i]);
}
}
DataTable dt = new DataTable();
sda.Fill(dt);
return dt;
}
#endregion
#region 執行SQL命令,回傳第一行第一列的值,SQL有無引數均可
/// <summary>
/// 執行非查詢SQL命令,回傳第一行第一列的值,SQL有無引數均可
/// </summary>
/// <param name="cmdtext">SQL命令文本</param>
/// <param name="cmdtype">命令型別</param>
/// <param name="names">引數名稱串列</param>
/// <param name="values">引數名稱對應的引數值串列</param>
/// <returns>object型別,表示所得第一行第一列的值</returns>
public static object GetOneData(string cmdtext, CommandType cmdtype, string[] names, object[] values)
{
scd.CommandText = cmdtext;
scd.CommandType = cmdtype;
scd.Parameters.Clear();
if (names != null)
{
for (int i = 0; i < names.Length; i++)
{
scd.Parameters.AddWithValue(names[i], values[i]);
}
}
if (myconn.State == ConnectionState.Closed)
{
myconn.Open();
}
object result = scd.ExecuteNonQuery();
myconn.Close();
return result;
}
#endregion
}
}
----------------------------------------------------------------------------------------------------------------------------------------------
//BLL層
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using Entity;
using DataAccess;
namespace Business
{
public static class AdminBusiness
{
public static DataTable SelectViewGoods()
{
string[] names = new string[] { "tablename" };
object[] values = new object[] { "View_Goods" };
return DataAccess.DA.GetDataTable("spr_SelectXTable", CommandType.StoredProcedure, names, values);
}
----------------------------------------------------------------------------------------------------------------------------------------------
//存盤程序
ALTER PROCEDURE [dbo].[spr_SelectXTable]
@tablename varchar(50)
AS
BEGIN
declare @sql varchar(max)
set @sql='select * from '+@tablename
exec(@sql)
END
uj5u.com熱心網友回復:
看你們自己的 GetDataTable 的檔案,問問為什么沒有標準檔案或者內部培訓。uj5u.com熱心網友回復:
一般來說,負責撰寫 SelectViewGoods 這個方法的工程師可能是負責對 BLL 需求進行設計的人,或者是負責撰寫 spr_SelectXTable 的工程師可能是負責對一些最底層的零散的DB相關東西進行封裝的人。不管誰負責提供代碼,都會負責維護一份正規的 API 檔案,有著清晰的格式。開發中如果沒有對最基本的幾分檔案做過培訓,那就不可能上崗作業。不會讓人亂猜代碼。uj5u.com熱心網友回復:
存盤程序需要一個引數@tablename, 呼叫的時候,引數傳過去就行了uj5u.com熱心網友回復:
string[] names = new string[] { "tablename" };改成
string[] names = new string[] { "@tablename" };
試試看。
太久不用sqlcommand了。
uj5u.com熱心網友回復:
我是使用SqlParameter[]引數化呼叫存盤程序,也提示過引數未提供,
當時我判斷了引數是否為空,存盤程序才執行成功。
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("In_dExecutiveDateFrom", parameters.PerformedOnFrom){ SqlDbType=System.Data.SqlDbType.DateTime},
new SqlParameter("In_dExecutiveDateTo", parameters.PerformedOnTo){ SqlDbType=System.Data.SqlDbType.DateTime},
new SqlParameter("In_sPartyIds", string.IsNullOrWhiteSpace(parameters.PartyIds)?DBNull.Value.ToString():parameters.PartyIds){ SqlDbType=System.Data.SqlDbType.NVarChar,IsNullable=true}
};
string.IsNullOrWhiteSpace(parameters.PartyIds)?DBNull.Value.ToString():parameters.PartyIds
uj5u.com熱心網友回復:
給引數默認值空字串轉載請註明出處,本文鏈接:https://www.uj5u.com/net/26237.html
標籤:ASP.NET
上一篇:這個錯誤怎么處理呢
