无法将SQL数据读取器数据加载到DataTable中

时间:2011-10-18 14:55:48

标签: c# .net sql-server-2008 datatable sqldatareader

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();创建的,HasRowstrue,它会显示正确的字段数量。但是,我从中创建的DataTable为空。

我做错了什么?我99%肯定它正在获取数据,但我不知道如何通过SqlDataReader对象找到它以确保它。

感谢。

1 个答案:

答案 0 :(得分:6)

而不是SqlDataReader,请使用SqlDataAdapter

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

使用SqlDataAdapter,您无需明确呼叫SqlConnection.Open()SqlConnection.Close()。它是在Fill()方法中处理的。