2014-10-27 48 views
0

所以我創建了一個ODReader,它執行一個查詢,在這個查詢中我從表格中獲得某些價值。 但是,當我嘗試在mbox中顯示此數據時(只是暫時),我只能顯示第一個值。 只要我嘗試獲取第二組值,它會給我這個錯誤對象引用未設置爲對象的實例。我只能從ODReader中獲得一個值

的代碼如下

 public void betaaldgroep() 
    { 
     List<int> groepsres = new List<int>(); 
     OracleParameter[] Betaald = new OracleParameter[10];//moet flexibel worden gemaakt 

     OracleDataReader ODReader = DBConnection.Select("SELECT GROEPRESERVERING_ID,BETAALD FROM   GROEPRESERVERING ", Betaald); 
     ODReader.Read(); 
     for (int x = 0; x < 2; x++) 
     { 
      MessageBox.Show(ODReader["GROEPRESERVERING_ID"].ToString()); 
      MessageBox.Show(ODReader["BETAALD"].ToString()); 
      ODReader.NextResult(); 

     } 



    } 

現在我qeuistion是我該怎麼讓每一套valeus而不只是第一個?

+0

你會怎麼做,如果你返回超過2個記錄我建議改變for循環while循環也因爲你是在例如我也會實現'string.Join()',你甚至可以將值存儲在List 中並實現'MessageBox.Show(string.Join(「,」,YourList)) ;' – MethodMan 2014-10-27 14:48:15

回答

0

ODReader.NextResult();會從您的查詢中返回下一個「結果集」。您的查詢中只有一條SELECT聲明,因此您將得到一個結果集。由於沒有第二個結果集,因此當您嘗試訪問ODReader["GROEPRESERVERING_ID"].ToString()時,您會收到空引用異常。

你應該尋找的是從結果集中獲取下一行。使用

ODReader.Read();來迭代到下一個結果集。如果你只想限制自己從結果集中使用讀兩行:

OracleDataReader ODReader = DBConnection.Select("SELECT GROEPRESERVERING_ID,BETAALD FROM   GROEPRESERVERING ", Betaald); 
int counter = 0; 
while (ODReader.Read() && counter < 2) 
{ 
    MessageBox.Show(ODReader["GROEPRESERVERING_ID"].ToString()); 
    MessageBox.Show(ODReader["BETAALD"].ToString()); 
    counter++; 
}