我来自这里,但我的情况有所不同。我需要将结果存储在DataTable
中,我有两种潜在的方法:
public static DataTable SelectDataTable(string query, string ConnectionString)
{
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
using (SqlDataAdapter myDataAdapter = new SqlDataAdapter(query, myConnection))
{
DataTable dt = new DataTable();
myDataAdapter.Fill(dt);
return dt;
}
}
}
并且
public static DataTable SelectDataTable(string query, string ConnectionString)
{
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(query, myConnection))
{
myConnection.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader(CommandBehavior.CloseConnection));
return dt;
}
}
}
所以我的问题是:
SqlDataAdapter
+Fill()
与SqlDataReader
+DataTable
+Load()
之间有什么区别?
以上两种方法哪种更好?
Joel的回答非常详细,这使得这个问题不是一个重复的问题
事实上,我并没有使用SqlDataReader
的所有优点,我只用它来填充一个DataTable,这让我期望得到的答案是:它们一样吗?不幸的是,很难猜测在底层发生了什么。