0

2 つの DataTable があり、1 つの SqlDataReader からデータを取り込む必要があります。

この理由は、SQL クエリで結合を作成し、それらを含むリーダーから 2 つのテーブルにデータを入力したいからです。

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

DataTable.Copyの構造とデータの両方を にコピーするために使用table1しますtable2

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 に答える
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 に答える