2

我有一个存储过程,它返回我在 DataReader 中捕获的两个结果集。

dr = returnData(Id,frmDate, toDate);

dt1 = new DataTable();
dt2 = new DataTable();

dt1.Load(dr);
dr.NextResult(); // Proceed to next resultset
dt2.Load(dr);

DataTable dt1 已成功填充,但 DataTable dt2 仍为空。怎么做。甚至可能吗?DataReader 第一次使用时会被销毁吗?

4

1 回答 1

4

非常老的问题,但万一其他人偶然发现这个......在这个SO答案中找到了答案:如果你使用DataTable.Load()那么你不应该使用rdr.NextResult(),因为这是隐含的。只需致电.Load()您的下一张桌子。因此,例如,如果您有一个expectedTableCount

ds = new DataSet();
ds.Tables.Add("Table1");
ds.Tables[0].Load(reader);
for (int ii = 1; ii < expectedTableCount; ii++)
{
    ds.Tables.Add("Table" + (ii + 1));
    ds.Tables[ii].Load(reader);
}
于 2017-03-24T18:31:20.777 回答