SQL ServerのにDBNULLの値を挿入することはできません
-
22-09-2019 - |
質問
私はこのエラーが出るのはなぜ?
Object cannot be cast from DBNull to other types.
私は、SQL Serverでは、数値データ型にNULL値を挿入したとき2005
ここに私のコードは、
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;
解決
あなたはDBNull.Value
に行うにはあなたのコードの試みとしてInt64
にConvert.ToInt64
を変換することはできません。 DBNull.Value
手段「不明」又は「存在しない」、したがって、他のデータ型への論理的な変換が存在しない。
materialIn
インスタンスが強く型付けされたDataRow
のいくつかのフォームがある場合、それはあなたが使用するために必要なものであるSetMeasurementIdNull
方法を、持っています。あなたはSQLまたはEFへのLINQを使用している場合は、すべてのDBNull
に対処する必要はありません、あなたはだけでなく、書き込みmaterialIn.measurementId = null
でしょう。
他のヒント
そのObject cannot be cast from DBNull to other types.
ので、
だから、あなたが何をする必要があるかDBNull
の値を確認することです。
materialIn.measurementId = DlMeasurement.SelectedValue == DBNull.Valueの? 0:Convert.ToInt64(DlMeasurement.SelectedValue.ToString());
はDBNullはInt64型に変換しません。あなたのプロパティに格納することができるヌル0などあなたが表現するために値をNULL可能int型を使用して、値にヌルを保存したり、何かをする必要があります。