converting system.dbnull to system.string

R

Robert Bravery

HI all,

I have a column value returned to a string variable in my c# app. But the
return type is of system.dbnull. How can I convert that to a system.sting

Thanks
Robert
 
D

Dave Sexton

Hi Robert,

object value = row["column"];

string str = (value is DBNull) ? null : (string) value;
 
S

Stefan Delmarco

Hello Robert,

Just call ToString() on the value returned. DbNull.String() will return string.empty.

Alternatively, if you want null returned then you'll have to convert if yourself.
A little helper function... well helps:

public static object ReadNullIfDbNull(IDataReader reader, int column)
{
object value = reader.GetValue(column);
return value == DbNull.Value ? null : value;
}

....

string column = (string)ReadNullIfDbNull(reader, 0);

Cheers,
Stefan Delmarco

http://www.fotia.co.uk
 
R

Robert Bravery

HI Stefan,

Thanks for your reply.
I tried that, as in:
string dbnString;
dbnString = cuser.FirstName.ToString();

But still get the error:
- cuser.FirstName.ToString() 'this.cuser.FirstName' threw an exception of
type 'System.Data.StrongTypingException' string
{System.Data.StrongTypingException}

I'm new to this, so no guessing why I am confused now

Thanks
Robert
 
D

Dave Sexton

Hi Robert,

When using a Typed DataSet you must check first if the column contains a
DBNull value:

string dbnString;

if (cuser.IsFirstNameNull())
dbnString = null;
else
dbnString = cuser.FirstName;
 
S

Stefan Delmarco

Hello Robert,

From the code snippet it looks like you're using a strongly typed data set.
I was assuming you were iterating over an IDataReader. Have a look at the
XSD for your dataset (or have a look at it in the DataSet designer). I bet
that the "NullValue" property for the FirstName column is "(Throw)". Look
for msprop:nullValue="_throw" in the XSD.

More information here: http://msdn2.microsoft.com/en-us/library/ya91ataz(vs.71).aspx

Cheers,
Stefan Delmarco

http://www.fotia.co.uk
 
S

Stefan Delmarco

I should have added, there are 3 ways to configure your typed dataset's handling
of null values (per column):

- Throw an exception if a null is encountered (the default)
- Return null
- Return string.Empty

Your typed data set is using the default. .NET Reflector shows that this
is the only use of the StrongTypingException type.

Cheers,
Stefan Delmarco

http://www.fotia.co.uk
 
D

Dave Sexton

Hi Stefan,

Note that the last two options only work when a DataColumn is typed as a
string. A Typed DataColumn will not be able to return a null reference or
string.Empty for anything other than System.String.
 
R

Robert Bravery

Thanks Dave and Stefan,
Im off to try youre suggestions
And yes, I am using a string typed dataset.

Robert
 
R

Robert Bravery

DAve,
Thanks for this. It is good to know.
A lot to learn, especially when comming from a very differnt programming
background

Robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top