C#中存储过程和DataTable的应⽤
存储过程p_OperatorDetails,有四个参数@sDatetime,@eDatetime,@operatorNo,@transdesc。其中@operatorNo和@transdesc为两个可选参数,通过这四个参数如何从存储过程⾥⾯提取⾃⼰想要的特定数据字段,⽅法各异,这⾥我⽤的是⽤DataTable的相关操作。
⾸先打开数据库链接
string strCon = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection conn = new SqlConnection(strCon);
conn.Open();
创建dataTable对象
DataTable dt = new DataTable();
创建SQLDataadapt对象来操作数据源存储过程p_OperatorDetails
SqlDataAdapter da=new SqlDataAdapter("p_OperatorDetails",conn);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
创建sql参数并为其赋值
SqlParameter p1 = new SqlParameter("@sDatetime", SqlDbType.DateTime);
truncated在存储过程中怎么使用SqlParameter p2 = new SqlParameter("@eDatetime", SqlDbType.DateTime);
SqlParameter p3 = new SqlParameter("@operatorNo", SqlDbType.Int);
SqlParameter p4 = new SqlParameter("@transdesc", SqlDbType.VarChar);
p1.Value = sTransactionDateStart;
p2.Value = sTransactionDateEnd;
if (sOperatorNo != "")
{
p3.Value = Convert.ToInt32(sOperatorNo);
da.SelectCommand.Parameters.Add(p3);
}
else
{
p3.Value = "";
}
if (sTransTypeNo != "")
{
p4.Value = sTransTypeNo;
da.SelectCommand.Parameters.Add(p4);
}
else
{
p4.Value = "";
}
da.SelectCommand.Parameters.Add(p1);
da.SelectCommand.Parameters.Add(p2);
通过SqlDataAdapter对象将得到的数据集填充到DataTable中去
da.Fill(dt);
注意直接得到的得到的DataTable对象是不能够进⾏sql操作的(可能我做的项⽬⽤这种⽅法并不适⽤于各位),关键的问题来了,我想要这个数据集⾥⾯的特点字段⽽不是整个存储过程所得到的数据集,我所使⽤的⽅法是⽤DataTable的Clone⽅法可能⼀张新的虚拟表来提供数据供我的报表使⽤。
DataTable newdt = new DataTable();
newdt = dt.Clone();
DataTable中的数据不能够直接像实际数据表⼀样操作数据,但是也有它⾃⼰的⽅法
newdt = dt.DefaultView.ToTable(false, new string[] { "BankCardId", "EmployeeName", "Deptname", "TransDesc", "DeviceDateTime", "remain","OperatorName" });
⾄此,我想要的特定字段的虚拟表就出来了(报表⽤,做了⼏天发现这种⽅法还是最合适的,不知道各位⼤⽜有没有更好的⽅法)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。