SqlDataAdapter.Fill () против DataTable.Load () - PullRequest
0 голосов
/ 07 марта 2019

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

...