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).
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>
{
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: CSharp, Programmering

0 kommentarer:
Send en kommentar
<< Start