将SQL Data Reader数据加载到DataTable中出现问题

5
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();
                }
            }

因此,通过ExecuteReader();创建了var result,并且HasRowstrue,显示正确的字段数量。然而,我从中创建的DataTable为空。
我做错了什么?我99%确定它正在获取数据,但我不知道如何通过SqlDataReader对象找到它以确保。
谢谢。
2个回答

6

使用SqlDataAdapter代替SqlDataReader

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

使用 SqlDataAdapter,您不需要显式调用 SqlConnection.Open()SqlConnection.Close()。这在 Fill() 方法中处理。

0
您可以尝试在SQL命令语句中添加"COALESCE"...如果查询结果中有一些NULL值,那么您将会在dataTable中遇到问题。

请添加进一步的细节来扩展您的回答,例如工作代码或文档引用。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接