cannot insert DBNULL value into sql server
-
22-09-2019 - |
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;
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.