Я пришел от этого вопроса здесь, но у меня другой случай. Мне нужен мой результат в DataTable
, и у меня есть 2 возможных метода:
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()
Какой из этих методов предпочтительнее?
Джоэл ответ довольно подробно, что делает этот вопрос не дубликатом
На самом деле я не использую все упомянутые преимущества SqlDataReader
. Я использую его для заполнения DataTable, и это заставляет меня ожидать, что ответ будет таким: Это то же самое ?! К сожалению, трудно догадаться, что происходит под капотом.