【发布时间】:2013-02-06 14:13:57
【问题描述】:
我想知道返回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];
}
【问题讨论】:
-
你为什么不直接注销开始时间循环X次然后注销结束时间
-
@Satinder Singh 与问题无关,但是:在 DataReader 版本中,不要忘记将 SqlCommand 和 DataReader 变量放入 using 块中,因为它们是 IDisposable。
-
如果你只处理一个表,也许直接调用 DataTable.Load( ) 就足够了。
标签: c# performance datatable sqldatareader sqldataadapter