2013-10-14 76 views
0

我有一個存儲過程返回兩個結果集,我在DataReader中捕獲。從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在第一次使用時會被破壞嗎?

+0

'NextResult()'應該做的伎倆。你可以告訴我們被稱爲SPROC嗎? – rossipedia

+0

存儲過程成功返回兩個結果集,我通過直接在Sql Server Management Studio上執行檢查。 –

+1

「NextResult」實際上是否返回「true」?你顯示的代碼忽略了返回值。 –

回答

0

非常古老的問題,但萬一別人絆倒在這...找到答案this SO answer:如果您使用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); 
} 
相關問題