用 DataTable 替换 DataReader

Posted

技术标签:

【中文标题】用 DataTable 替换 DataReader【英文标题】:Replacing a DataReader with a DataTable 【发布时间】:2012-12-01 23:48:27 【问题描述】:

我正在修改一些其他人编写的代码,出于时间考虑需要返回一个 DataTable。

我有这样的代码:

using (SqlCommand command = new SqlCommand(query, conn))

      //add parameters and their values

      using (SqlDataReader dr = command.ExecuteReader())
      
          return dr;
      

但是返回数据表的最佳方式是什么?

【问题讨论】:

【参考方案1】:

使用DataTable.Load 方法用来自 SqlDataReader 的值填充您的表:

using (SqlDataReader dr = command.ExecuteReader())

    var tb = new DataTable();
    tb.Load(dr);
    return tb;

【讨论】:

【参考方案2】:

通过使用 DBDataAdapter

摘自 ms 文档

// Create the DbDataAdapter.
DbDataAdapter adapter = new DbDataAdapter();
adapter.SelectCommand = command;

// Fill the DataTable.
DataTable table = new DataTable();
adapter.Fill(table);

【讨论】:

它说我不能创建抽象类的实例

以上是关于用 DataTable 替换 DataReader的主要内容,如果未能解决你的问题,请参考以下文章

DataReader 或 DataTable 绑定Repeater?

C# - 将 DataReader 转换为 DataTable

如何通过DataReader / DataTable进行查看?

有人对 DataTable.Load(DataReader) 方法有任何意见吗?

.Net工具类--表达式目录树解析DataReader和DataTable

DataTable.Load 显示的行数少于源 DataReader