我想知道哪个在返回 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;
}
}
使用 SqlDataAdapter
:
public DataTable populateUsingDataAdapter(string myQuery)
{
SqlDataAdapter dap = new SqlDataAdapter(myQuery,cn);
DataSet ds = new DataSet();
dap.Fill(ds);
return ds.Tables[0];
}
最佳答案
差异可以忽略不计,因此最好使用更简洁的版本:SqlDataAdapter.Fill
。
SqlDataReader.Fill
在内部创建一个内部类LoadAdapter
(派生自DataAdapter
),并调用它的Fill
方法:性能将与 SqlDataAdapter.Fill(DataTable)
非常相似。
参数的初始化/验证会有一些小差异,但随着行数的增加,这会变得越来越不重要。
另请注意,应修改您的第二个样本以与第一个样本进行比较:
public DataTable populateUsingDataAdapter(string myQuery)
{
using (SqlConnection con = new SqlConnection(constring))
{
SqlDataAdapter dap = new SqlDataAdapter(myQuery,con);
DataTable dt = new DataTable();
dap.Fill(dt);
return dt;
}
}
关于c# - SqlDataReader 与 SqlDataAdapter : which one has the better performance for returning a DataTable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14999143/