Question

Why i get this error?

Object cannot be cast from DBNull to other types.

when i inserted null value for a numeric datatype in sql server 2005

Here is my code,

 if (MeasurementTr.Visible == true)
    {
        materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
    }
    else
    {
        materialIn.measurementId = Convert.ToInt64(DBNull.Value);
    }

EDIT :

Is this right??

 materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
Was it helpful?

Solution

You cannot convert DBNull.Value to Int64 as your code attempts to do in Convert.ToInt64. DBNull.Value means "unknown" or "nonexistent" and therefore there is no logical conversion to any other data type.

If the materialIn instance is some form of strongly-typed DataRow, it will have a SetMeasurementIdNull method, which is what you need to use. If you're using Linq to SQL or EF, you shouldn't need to deal with DBNull at all, you would instead just write materialIn.measurementId = null.

OTHER TIPS

Because that Object cannot be cast from DBNull to other types.

So what you need to do is to check the value for DBNull.

materialIn.measurementId = DlMeasurement.SelectedValue == DBNull.Value ? 0 : Convert.ToInt64(DlMeasurement.SelectedValue.ToString());

DBNull doesn't convert to an Int64. You will need to use a nullable int and then store null in the value or do something with the value to represent null such as 0 that can be stored in your property.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top