2011-12-24 13 views
5

Mimo że wiem, że istnieją dane dla dokładnego zapytania SQL, które wykonuję, ponieważ fakt, że robię zapytanie SQL bezpośrednio w bazie danych, Ciągle dostaję wyjątek mówiąc, że żadne dane nie istnieją. Mój kod jest poniżej:Błąd: "Brak danych dla wiersza/kolumny" przy użyciu OdbcDataReader

 try 
     { 
      dbConnection.Open(); 

      // Process data here. 
      OdbcCommand dbCommand = dbConnection.CreateCommand(); 
      dbCommand.CommandText = "select forename from tblperson where personcode in (select clientcode from tblclient) and surname = '######'"; 
      OdbcDataReader dbReader = dbCommand.ExecuteReader(); 

      Console.WriteLine(dbReader.GetString(0)); 

      dbReader.Close(); 
      dbCommand.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
     finally 
     { 
      dbConnection.Close(); 
     } 

Czy ktoś może podać mi powody, dlaczego tak się dzieje. Kwerenda powinna zwrócić pojedynczy wynik, a obecnie robię to tylko po to, aby upewnić się, że działa, a nie jest. Każda pomoc będzie bardzo ceniona.

Odpowiedz

6

Po wywołaniu ExecuteReader czytnik zostaje umieszczony pod pierwszym numerem zwróconym przed numerem przed. Aby przeczytać pierwszy rekord trzeba zadzwonić Read()

dbReader.Read() 

Or oczywiście jeśli istnieje wiele wierszy:

while (dbReader.Read()) 
+0

Ty. To było bardzo przydatne i działa. – Dazzmaster1

+0

@ Dazzmaster1 - świetnie - nie ma za co i powodzenia! –

+0

Taki prosty problem, taki niepomocny komunikat o błędzie. –