07 juli 2007

Fra DBNulls til almindelige nulls

Jeg har længe døjet med slidsom kodning, når jeg hev data fra en database til et .Net objekt:
Hvis feltet er null, så returneres værdien System.DBNull.Value - og den kan ikke castes til f.eks. en streng.

Dvs.
IDataReader dr;
(...)
string s = (string)dr["Felt_Streng"];

vil fejle hvis værdien i "Felt_Streng" er null i databasen.

Derfor har jeg lavet denne lille konverter:

static T ConvertDBNull<t>(object o)
{
if (o == System.DBNull.Value)
return default(T);
return (T)o;
}


Nu kan jeg skrive

IDataReader dr;
(...)
string s = ConvertDBNull<string>(dr["Felt_Streng"]);

Og eftersom der returneres default-værdien, så virker det også på objekter, som ikke kan være null (f.eks. int).

Etiketter: ,

0 kommentarer:

Send en kommentar

<< Start