2010-12-10 9 views
7

Ich greife auf eine MS Access 2007-Datenbank über C# zu, und ich bekomme immer eine Ausnahme, wenn ich versuche, eine leere Zelle zu lesen.Überprüfen Sie, ob eine Datenbankzelle zuerst leer ist

Insbesondere versuche ich eine "Datum/Uhrzeit" -Zelle zu lesen, die leer sein kann oder nicht. Ich verwende OLE DB und habe ein DataSet gefüllt. Keine dieser Bedingungen funktioniert:

DataSet dataSet = GetDataSet(); 
DataRow row = dataSet.Tables[0].Rows[0]; 
DateTime time = new DateTime(); 
time = (DateTime)row[5]; // Exception thrown 

Wie überprüfen Sie, ob die Zelle leer ist, bevor Sie versuchen, es zuzuweisen? Keines dieser Arbeit:

if(row[5] == null) ; 
if(row[5] == DBNull) ; 
if(row[5] == (String)"") ; 

Edit: Ich sollte erwähnt haben: Wenn ich debuggen, heißt es, dass row [5] gleich „System.DBNull“, aber ich erhalte eine Fehlermeldung, wenn ich versuche, „if (Zeile [5] == DBNULL) ". Der Fehler sagt "DBNULL ist ein Typ, der in dem gegebenen Kontext nicht gültig ist".

+2

"Zelle" ist, was Sie in einer Tabelle verweisen; Es ist eine bestimmte Spalte in einem Datensatz, wenn es um eine Datenbank geht. –

Antwort

9

Sie können es wie folgt überprüfen.

if (row[5] == DBNull.Value) 
{ 
    // value is null 
} 
else if (String.IsNullOfEmpty(Convert.ToString(row[5])) 
{ 
    // value is still null 
} 
else 
{ 
    // value is not null here 
} 
+0

Danke, das ist es. Ich habe den ".Value" nach DBNULL nicht gesetzt. – Eric

+0

willkommen :) .... –

+0

bitte markieren Sie es als beantwortet, wenn dies Ihnen wirklich geholfen hat. Danke :) –

3
if(row[5] == DBNull.Value) 
+0

Danke. Das ist es. Forgot the ".Value" – Eric

+0

:), Sie sind willkommen – TalentTuner

0
if(Convert.IsDBNull(row[5])) 
{ 
... 
}