为什么我会收到此错误?
Object cannot be cast from DBNull to other types.
当我在sql server 2005中为numeric数据类型插入null值时
这是我的代码,
if (MeasurementTr.Visible == true) { materialIn.measurementId = Convert.ToInt64(DlMeasurement.SelectedValue.ToString()); } else { materialIn.measurementId = Convert.ToInt64(DBNull.Value); }
编辑:
这是正确的吗??
materialIn.measurementId = (Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) != 0) ? Convert.ToInt64(DlMeasurement.SelectedValue.ToString()) : 0;
Aaronaught.. 5
您不能转换DBNull.Value
到Int64
为你的代码试图在做Convert.ToInt64
. DBNull.Value
表示"未知"或"不存在",因此没有逻辑转换为任何其他数据类型.
如果materialIn
实例是某种形式的强类型DataRow
,它将有一个SetMeasurementIdNull
方法,这是您需要使用的方法.如果你使用Linq to SQL或EF,你根本不需要处理DBNull
,你只需要写materialIn.measurementId = null
.
您不能转换DBNull.Value
到Int64
为你的代码试图在做Convert.ToInt64
. DBNull.Value
表示"未知"或"不存在",因此没有逻辑转换为任何其他数据类型.
如果materialIn
实例是某种形式的强类型DataRow
,它将有一个SetMeasurementIdNull
方法,这是您需要使用的方法.如果你使用Linq to SQL或EF,你根本不需要处理DBNull
,你只需要写materialIn.measurementId = null
.