문제

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;
도움이 되었습니까?

해결책

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.

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top