2016-08-12 19 views
0

私はUbuntuで.NetCoreを使用してnpgsql v3.7を実行しています。npgsql:nullデータを選択すると「Column is Null」エラーが発生します

selectクエリを実行し、結果の行のセルがnullの場合、 "Column is null"というエラーメッセージが表示された例外がスローされます。

私はこれは少し極端なようだし、必要ではないはずNULL

"CASE WHEN " + fieldName + " IS NULL THEN '' ELSE " + fieldName + " END " 

をテストcase文の内部でselect句ですべての列を置くことによってこの問題を回避するために持っています。他の誰かがこれを見てきましたか?

ありがとうございました。

+1

私はsqlでやっていることを達成するために、通常は 'COALESCE'関数を使用します(' COALESCE(fieldName、 '') ' )。 – Marth

答えて

1

あなたは、おそらくこのような列を読み取ろうとしている。

using (var reader = cmd.ExecuteReader()) { 
    reader.Next(); 
    var o = reader.GetString(0); // Or any other of the Get methods on reader 
    ... 
} 

列がNULLを含んでおり、予想される動作である場合には、このコードは失敗します。 ADO.NETでは、実際に値を取得する前にヌル値をreader.IsDBNull(0)でチェックする必要があります。それがデータベースAPIの仕組みです。

1

NULL値はあなたにエラーを与えている理由を私は知らないが、あなたはCOALESCEを使用しての賛成で醜いCASE文で離れて行うことができます。

"COALESCE(" + fieldName + ", '')" 

理想的には、設定の変更は、NULLことを確認すべきです値によってこの問題は発生しません。

+0

誰もが感謝してくれたすべての人に感謝します。問題は(Marthがピックアップしたように)NULLケースを処理するためにNpgsqlDataReader.GetString()が必要であるということでした。私はDBNullを最初にテストするようにこれを変更しました。ありがとう。 – Hughgo

関連する問題