2010-12-10 13 views
7

Estoy accediendo a una base de datos MS Access 2007 a través de C#, y sigo obteniendo una excepción cada vez que intento leer una celda vacía.Compruebe si una celda de la base de datos está vacía primero

Específicamente, estoy tratando de leer una celda "Fecha/Hora" que puede o no estar vacía. Estoy usando OLE DB y he llenado un DataSet. Ninguna de estas condiciones funciona:

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

¿Cómo comprobar si la celda está vacía antes de intentar asignarla? Ninguno de estos trabajos:

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

Editar: debería haber mencionado: Cuando elimino errores, se dice que la fila [5] es igual a "System.DBNull", pero me da un error cuando intento "si (fila [5] == DBNULL) ". El error dice "DBNULL es un tipo, que no es válido en el contexto dado".

+2

"célula" es lo que se hace referencia en una hoja de cálculo; es una columna específica en un registro cuando se trata de una base de datos. –

Respuesta

9

Puede verificarlo de la siguiente manera.

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

Gracias, eso es todo. No puse el ".Value" después de DBNULL. – Eric

+0

bienvenida :) .... –

+0

por favor márquelo como respondido si esto realmente lo ayudó. gracias :) –

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