(in response to the add-on question about handling things on the client side...)
OleDbDataReader
will return an Access database Text
field as either System.String
(if it contains a value), or System.DBNull
(if it is Null
in the database).
So, if you want to convert DBNull
values to empty (zero-length) strings just use
cmd.CommandText =
"SELECT txtCol FROM Clients WHERE ID = 3";
OleDbDataReader rdr = cmd.ExecuteReader();
rdr.Read();
string result = rdr["txtCol"].toString();
In the cases where you do care if the value returned was DBNull
then test for it
cmd.CommandText =
"SELECT txtCol FROM Clients WHERE ID = 3";
OleDbDataReader rdr = cmd.ExecuteReader();
rdr.Read();
string result;
if (rdr["txtCol"] is DBNull)
{
result = "{That field was Null.}";
}
else
{
result = rdr["txtCol"].ToString();
}
(Note that in C#, null
and DBNull
are different critters.)
Edit
Similarly, for numeric database fields (for example, of type Double
), you can "force" nulls to zero with
cmd.CommandText =
"SELECT dblCol FROM Clients WHERE ID = 3";
OleDbDataReader rdr = cmd.ExecuteReader();
rdr.Read();
double dResult = (rdr["dblCol"] is DBNull ? 0 : Convert.ToDouble(rdr["dblCol"]));