2011-01-19 10 views
16

Come posso verificare un valore NULL in un MySqlDataReader aperto?Come verificare NULL in MySqlDataReader in base al nome della colonna?

Quanto segue non funziona; è sempre colpire il else:

if (rdr.GetString("timeOut") == null) 
{ 
    queryResult.Egresstime = "Logged in"; 
} 
else 
{ 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
} 

rdr.IsDbNull(int i) accetta solo un numero di colonna, non il nome.

risposta

28
var ordinal = rdr.GetOrdinal("timeOut"); 
if(rdr.IsDBNull(ordinal)) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString(ordinal); 
}//if 

o

if(Convert.IsDBNull(rdr["timeOut"])) { 
    queryResult.Egresstime = "Logged in"; 
} else { 
    queryResult.Egresstime = rdr.GetString("timeOut"); 
}//if 
+0

Sei il vincitore 0sil tuo assegno verde personale. Ho usato il secondo. Grazie! – rd42

+0

piccolo errore di battitura nel secondo esempio: cambia "IsDbNull" in "IsDBNull" – 4mla1fn

+0

@ 4mla1fn Grazie, ho modificato la mia risposta. –

13

se (rdr.GetString ("timeout") == DBNull.Value)

null non è lo stesso di DBNull

Mi dispiace risposta, sbagliata, Sam B è giusto. Ho scambiato questo per roba DataRow.

SqlDataReader ha fortemente digitato GetString() e fornisce IsDBNull(int column) per questo caso.

+2

penso che dovrebbe essere 'DBNull.Value' – VoodooChild

+0

@BoodooChild - grazie – Axarydax

+0

Heres quello che ottengo errore \t 1: operatore '==' non può essere applicato a operandi di tipo 'string' e 'System.DBNull' – rd42

1

Modifica null a DBNull.Value.

+0

Ecco cosa ottengo Errore \t 1: Operatore '==' non può essere applicato agli operandi di tipo 'stringa' e 'System.DBNull' - – rd42

1

si può anche fare:

If (string.IsNullOrEmpty(rdr.GetString("timeOut"))

+0

Ha lo stesso effetto di (rdr.GetString ("timeOut") == null) – rd42

+1

@ rd42: qual è il valore effettivo in quel campo durante il debug? solo curioso? – VoodooChild

+0

Il valore è: 12/7/2010 10:16:46 AM Grazie per il tuo aiuto. – rd42

3

È necessario chiamare rdr.IsDBNull(column) per determinare se il valore è DbNull.

0

Ecco quello che mi piace:

var MyString = rdr["column"] is DBNull ? "It's null!" : rdr.GetString("column"); 

Ad es (per il requisito originale):

queryResult.Egresstime = rdr["timeOut"] is DBNull ? "Logged in" : rdr.GetString("timeOut"); 
Problemi correlati