我通常使用DataSet
,因爲它非常靈活。最近我分配了代碼優化任務,爲了減少對數據庫的命中,我在一個過程中更改了兩個查詢。一個查詢返回count
,另一個返回actual data
。也就是說,我的stored procedure
返回兩個表。現在,我知道如何使用DataSets
來讀取兩個表格,但我需要使用DataReader
來讀取兩個表格。在尋找我發現This。DataReader中的倍數表
我按照文章,寫我的代碼是這樣的:
dr = cmd.ExecuteReader();
while (dr.Read())
{
}
if (dr.NextResult()) // this line throws exception
{
while (dr.Read())
{
但我正在逐漸dt.NextResult異常。例外是:
Invalid attempt to call NextResult when reader is closed.
我也試圖谷歌上面的錯誤,但仍然無法解決問題。 任何幫助將不勝感激。我需要使用datareader
來讀取多個表格,這可能嗎?
什麼,我不明白的是:「一個查詢返回的計數和其他收益的實際數據是,我的存儲過程返回兩個表」 _ _爲什麼是計數(這是一個標量值)**表**? –
是的,它是標量值,但存儲過程是使用動態查詢編寫的。這兩個查詢都非常大,查詢被寫爲varchar,然後最後使用Exec執行。如果我將Count查詢作爲實際數據查詢的子查詢,那麼查詢變量的大小非常大,並且會執行錯誤。所以爲了避免這種情況,我寫了兩個不同的查詢,這就是Count也來自表格的原因(第二個表格)。我希望我說清楚。 –