在我當前的應用程序中,我需要執行一個SQL查詢,並在繼續之前得到返回結果的計數。這是我下面的代碼:OracleDataReader拋出異常
if (GetCount(reader) == 1)
{
reader.Read();
Console.WriteLine(reader["field1"]);
Console.WriteLine(reader["field2"]);
}
這是GetCount()
方法
public static int GetCount(OracleDataReader reader)
{
int count = 0;
while (reader.Read())
{
count++;
}
return count;
}
接受的結果計數,當它進入,如果代碼塊後,一個異常被拋出,指出:
[System.InvalidOperationException] = {"Operation is not valid due to the current state of the object."}
但是,如果我沒有得到計數,它工作正常。
我認爲,因爲我的GetCount函數有reader.Read(),我需要以某種方式重置讀取器才能讀取值?老實說,我很難過。有什麼建議麼?
編輯; 在第一個代碼塊,我得到相同的異常,即使我註釋掉reader.Read();
但是當我按值傳遞讀者getCount將,它不能複印,讓我原來的讀者保持原樣? – xbonez 2011-01-07 20:12:09
@xbonez閱讀器是一個參考類型,意味着你正在發送一個參考值的副本而不是閱讀器的副本。因此你指向同一個閱讀器 – 2011-01-07 20:14:57