2009-04-01 4 views
11

I have a DataTable resultSet; - Sto provando a verificare i campi per null, ma ottenere un oggetto {{} '(empty-set?) Indietro. Le ricerche che coinvolgono "{}" non stanno fornendo soluzioni appropriate.C# DataTable ItemArray restituisce '{}' - come posso verificare il valore null?

Questo è il codice che non funziona come previsto quando il campo "fk_id" è nullo:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == null) 
{ 
    //never reaches here 
} 

Nota: utilizzando un indice int invece del Columns.IndexOf() non è il problema.

Inoltre, "{}" ha un altro nome in C#?

risposta

18

Per controllare una colonna per DBNull a un DataSet, è possibile utilizzare il metodo IsNull:

if (resultSet.Rows[0].IsNull("fk_id")) 

tuo confronto con null è probabilmente venendo a mancare a causa DataSet non usano null per rappresentare un valore "banca dati NULL" - usano DBNull.Value. Se è necessario il codice per lavorare nel modo che avete presentato, provate questo:

if (resultSet.Rows[0].ItemArray[resultSet.Columns.IndexOf("fk_id")] == DBNull.Value) 
+0

Grande grazie, ho completamente dimenticato "DBNull.Value" - è da un po 'che non ho manipolato i set di dati –

+0

Mi chiedo perché l'hanno progettato in questo modo invece di usare solo null? –

+2

@ k.rob Perché non c'era Nullable in .NET 1.0, quindi non c'era modo di rappresentare un valore Int32 di "null". –

-2
try 
{ 
    if (DT.Rows[0][0] != null) 
    {  
     //your code 
    }  
}  
catch  
{  
    MessageBox.Show("AUTHANICATION FAILED.");  
} 
-2

favore usa:

dataTable.Select("FieldName is NULL") 

questo vi darà i DataRow con i valori nulli nella colonna FieldName .