Проблемы с загрузкой данных в SQL Data Reader в DataTable - PullRequest
5 голосов
/ 18 октября 2011
string query = "select * from cfo_daily_trans_hist";
            try
            {
                using (SqlConnection connection = new SqlConnection(
                       cnnString))
                {
                    SqlCommand command = new SqlCommand(query);
                    command.Connection = connection;
                    connection.Open();

                    var result = command.ExecuteReader();
                    DataTable datatable = new DataTable();
                    datatable.Load(result);
                    connection.Close();
                }
            }

Таким образом, var result создается через ExecuteReader();, а HasRows равно true, и показывает правильное количество полей.Тем не менее, DataTable, который я создаю из него, пуст.

Что я делаю не так?Я на 99% уверен, что он получает данные, но я не знаю, как найти их через объект SqlDataReader, чтобы убедиться.

Спасибо.

1 Ответ

6 голосов
/ 18 октября 2011

Вместо SqlDataReader используйте SqlDataAdapter.

SqlDataAdapter myAdapter = new SqlDataAdapter(command);
myAdapter.Fill(datatable);

С SqlDataAdapter вам не нужно явно вызывать SqlConnection.Open() и SqlConnection.Close(). Он обрабатывается методом Fill().

...