Quando recuperiamo i dati dal db utilizzando un DataReader dobbiamo fare molta attenzione al casting, perchè se per caso il valore restituito è null si potrebbe sollevare l'eccezione
Specific Cast is Not Valid.
Per evitare questo abbiamo a disposizione la classe DBNull.
Es.
if(myReader["DataEvento") != DbNull.Value)
{
//allora effettuo il casting
}
Invece, siccome che in questa versione del framework non esistono i NullTypes, per settare corretamente i valori non stringa abbiamo a disposizione(almeno per il provider Sql) le classi del namespace System.Data.SqlTypes
Per esempio per settare a null un campo datetime
SqlParameter par = new SqlParameter("@DataEvento",SqlDbType.DateTime);
if(dataEvento == DateTime.MinValue)
{
par.Value = SqlDateTime.Null;
}
else
{
par.Value = dataEvento;
}
Quindi riassumendo per confrontare meglio usare DBNull mentre per settare i valori usare le classi SqlTypes in attesa(breve) della versione 2.0