我已经阅读了很多关于将DataTable插入SQL表的帖子,但是有一种简单的方法可以将SQL表拉入.NET DataTable吗?
我想知道哪一个具有更好的返回性能DataTable.SqlDataReader我在这里使用DataTable.Load(dr)
使用SqlDataReader:
public static DataTable populateUsingDataReader(string myQuery)
{
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(constring))
{
SqlCommand cmd = new SqlCommand(myQuery, con);
con.Open();
SqlDataReader dr = null;
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (dr.HasRows)
{
dt.Load(dr);
}
return dt;
}
}
Run Code Online (Sandbox Code Playgroud)
使用SqlDataAdapter:
public DataTable populateUsingDataAdapter(string myQuery)
{
SqlDataAdapter dap = new SqlDataAdapter(myQuery,cn);
DataSet ds = new DataSet();
dap.Fill(ds);
return ds.Tables[0];
}
Run Code Online (Sandbox Code Playgroud) 如果您只需要显示数据但不需要操作数据,则DataReader比DataTable更有效.但是,要从数据访问层获取DataReader,我应该打开连接对象吗?我认为这也是一个非常大的效率问题.那么为了充分利用DataReader,还有另一种方法吗?
我使用SP,这不是SP vs代码隐藏"构建您的SQL命令"问题.我正在寻找一种处理许多小事务的后端应用程序的高吞吐量方法.我使用SQLDataReader进行大部分返回,因为转发仅适用于大多数情况.
我已经看到它做了很多种方式,并且我自己也使用了大部分方法.
定义和接受存储过程参数作为参数本身的方法,并使用cmd.Parameters.Add构建(使用或不指定DB值类型和/或长度)
将SP参数及其值组装到数组或散列表中,然后传递给一个更抽象的方法来解析集合,然后运行cmd.Parameters.Add
表示表的类,根据需要初始化类,设置表示表字段的公共属性,以及调用Save,Load等方法
我确信还有其他我见过但现在也想不到的.我对所有建议持开放态度.