3

なぜこのエラーが発生するのですか?

Object cannot be cast from DBNull to other types.

SQL Server 2005 で数値データ型に 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;
4

3 に答える 3

5

コードが で行おうとしているように、 に変換することはできませDBNull.Valueん。 「不明」または「存在しない」を意味するため、他のデータ型への論理変換はありません。Int64Convert.ToInt64DBNull.Value

materialInインスタンスが厳密に型指定された何らかの形式である場合、使用する必要がDataRowあるSetMeasurementIdNullメソッドがあります。Linq to SQL または EF を使用している場合は、まったく対処する必要はありません。DBNull代わりに、materialIn.measurementId = null.

于 2010-01-26T05:05:11.033 に答える
1

というのはObject cannot be cast from DBNull to other types.

したがって、あなたがする必要があるのは、 の値を確認することですDBNull

materialIn.measurementId = DlMeasurement.SelectedValue == DBNull.Value ? 0 : Convert.ToInt64(DlMeasurement.SelectedValue.ToString());

于 2010-01-26T05:02:00.603 に答える
0

DBNull は Int64 に変換されません。nullable int を使用して値に null を格納するか、プロパティに格納できる 0 などの null を表す値を使用して何かを行う必要があります。

于 2010-01-26T05:06:32.000 に答える