欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#ADO.NET 执行带参数及有返回数据

程序员文章站 2022-04-29 13:53:43
直接上代码,这个过程中有个数据SqlDataReader转为 DataTable的过程,当中为什么这样,是应为我直接绑定DataSource的时候没有数据,网人家说直接绑定但是没效果,我就转换了一下。 //存储过程 public static DataTable GetTableaToPROCEDU ......

 

直接上代码,这个过程中有个数据sqldatareader转为 datatable的过程,当中为什么这样,是应为我直接绑定datasource的时候没有数据,网人家说直接绑定但是没效果,我就转换了一下。

//存储过程
public static datatable gettableatoprocedure(string procname,datetime begin,datetime end,string name, string strcon)
{
using (sqlconnection conn = new sqlconnection(strcon))
{
conn.open();
sqlcommand cmd = new sqlcommand();
cmd.commandtimeout = 1000;
cmd.connection = conn;
cmd.commandtext = procname;//需要调用的存储过程
cmd.commandtype = commandtype.storedprocedure;
sqlparameter para0 = new sqlparameter("@ad_begin", sqldbtype.datetime);//参数名称,类型,大小
para0.value = begin;
sqlparameter para1 = new sqlparameter("@ad_end", sqldbtype.datetime);//参数名称,类型,大小
para1.value = end;
sqlparameter para2 = new sqlparameter("@clientname", sqldbtype.nvarchar, 100);//参数名称,类型,大小
para2.value = name;
cmd.parameters.add(para0);
cmd.parameters.add(para1);
cmd.parameters.add(para2);
//获得数据
sqldatareader sqldate = cmd.executereader();//执行完后关闭连接
datatable dt = new datatable();//新建一个临时表存放结果
dt= convertdatareadertodatatable(sqldate);
return dt;
}
}
/// <summary>
/// sqldatareader 转成 datatable
/// </summary>
/// <param name="datareader"></param>
/// <returns></returns>
private static datatable convertdatareadertodatatable(sqldatareader datareader)
{
///定义datatable
datatable datatable = new datatable();

try
{ ///动态添加表的数据列
for (int i = 0; i < datareader.fieldcount; i++)
{
datacolumn mydatacolumn = new datacolumn();
mydatacolumn.datatype = datareader.getfieldtype(i);
mydatacolumn.columnname = datareader.getname(i);
datatable.columns.add(mydatacolumn);
}

///添加表的数据
while (datareader.read())
{
datarow mydatarow = datatable.newrow();
for (int i = 0; i < datareader.fieldcount; i++)
{
mydatarow[i] = datareader[i].tostring();
}
datatable.rows.add(mydatarow);
mydatarow = null;
}
///关闭数据读取器
datareader.close();
return datatable;
}
catch (exception ex)
{
///抛出类型转换错误
//systemerror.createerrorlog(ex.message);
throw new exception(ex.message, ex);
}
}