【问题标题】:Trouble loading SQL Data Reader data into DataTable将 SQL 数据读取器数据加载到 DataTable 时出现问题
【发布时间】:2011-10-18 14:55:48
【问题描述】:
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 对象找到它以确保。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    不要使用SqlDataReader,而是使用SqlDataAdapter

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

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

    【讨论】:

      【解决方案2】:

      您可以尝试在您的 sql 命令语句中添加“COALESCE”...如果您的查询结果中有一些 NULL 值,您将遇到 dataTable 的问题

      【讨论】:

      • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多