0

我有两个 DataTable,我需要从一个 SqlDataReader 填充它们。

这样做的原因是我在我的 sql 查询中创建了连接,并且我想从包含它们的读取器中填充两个表。

我使用了 DataTable 中的 Load 方法,但这仅适用于填充第一个表,因为在第一个 Load 方法之后,读者的光标设置为末尾。

我试图找到复制 SqlDataReader 的方法,但没有奏效。

有什么想法吗?

我使用的代码:

var reader = comm.ExecuteReader();
DataTable1 table1=new DataTable1();
DataTable2 table2=new DataTable2();
table1.Load(reader);
table2.Load(reader);
// table2 is empty because of the first load
4

2 回答 2

0

它可以将每个选择表放入dtList

List<DataTable> dtList = new List<DataTable>();
using (SqlDataReader reader = comm.ExecuteReader())
{
    while (!reader.IsClosed && reader.Read())
    {
        var dt = new DataTable();
        dt.Load(reader);
        dtList.Add(dt);
    }
} 
于 2014-05-14T02:56:15.520 回答
0

用于复制toDataTable.Copy的结构和数据。table1table2

var reader = comm.ExecuteReader();
DataTable table1 = new DataTable();
table1.Load(reader);
DataTable table2 = table1.Copy();

Msdn:DataTable.Copy


此外,您应该使用using

DataTable table1, table2;
using (reader = comm.ExecuteReader())
{
    table1 = new DataTable();
    table1.Load(reader);
    table2 = table1.Copy();
}
于 2013-07-30T09:16:43.267 回答