2010-12-10 8 views
7

J'accède à une base de données MS Access 2007 via C# et je reçois une exception chaque fois que j'essaie de lire une cellule vide. En particulier, j'essaie de lire une cellule "Date/Heure" qui peut être vide ou non. J'utilise OLE DB et j'ai rempli un DataSet. Aucune de ces conditions ne fonctionne:Vérifier si une cellule de base de données est vide

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

Comment vérifier si la cellule est vide avant d'essayer de l'assigner? Aucun de ces travaux:

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

Edit: Je l'ai dit: Quand je debug, il est dit que la ligne [5] est égal à « System.DBNull, », mais je reçois une erreur lorsque je tente « si (ligne [5] == DBNULL) ". L'erreur dit "DBNULL est un type, qui n'est pas valide dans le contexte donné".

+2

"cellule" est ce que vous faites référence dans une feuille de calcul; C'est une colonne spécifique dans un enregistrement lorsqu'il s'agit d'une base de données. –

Répondre

9

Vous pouvez le vérifier comme suit.

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

Merci, c'est tout. Je n'ai pas mis le ".Value" après DBNULL. – Eric

+0

bienvenue :) .... –

+0

s'il vous plaît marquer comme réponse si cela vous a vraiment aidé. merci :) –

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

Merci. C'est tout. J'ai oublié le ".Value" – Eric

+0

:), vous êtes les bienvenus – TalentTuner

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