私はあなたが使っているものをデータベースライブラリを知りませんが、上のトップADO.NETの構築されたほとんどの図書館は常に示すために、.NET null
参照を使用していませんSQL NULL
の値。それはによってアクセスされるDBNull
のためのものです。オブジェクト参照等価演算子==
またはObject.ReferenceEquals
を使用して、SQL NULL
をテストできます。
あなたのコードはむしろ複雑です。私はあなたの代わりにこれを試してお勧め:
Object value = row[8]; // I don't know what `row` is, change this to be a more specific type if there are any type-safety constraints on `row[8]`.
if(Object.ReferenceEquals(DBNull.Value, value)) {
// value is SQL NULL
}
else {
// value is not SQL NULL, but it is not necessarily a Decimal value either
if(value is Decimal) {
return (Decimal)value; // you can't use the shorthand `as` operator with value-types like Decimal
}
}
出典
2017-02-09 06:18:12
Dai
はrow' 'の種類は何 –
だけでなく、スニペットが含まれていますか? – Dai
読んでいる行の(インデックス8の)列がヌルです。ヌルを10進数で格納することはできません。 – Rob