cannot insert DBNULL value into sql server

c#, dbnull, sql-server-2005

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`.

Problem

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; ```

Original source