[解決済み] SQL データリーダー - Null カラム値の処理
2022-03-17 15:24:53
質問
SQLdatareaderを使って、データベースからPOCOを構築しています。このコードは、データベースでNULL値に遭遇したとき以外は動作します。例えば、データベースのFirstNameカラムがNULL値を含んでいる場合、例外が投げられます。
employee.FirstName = sqlreader.GetString(indexFirstName);
このような状況で、NULL値を扱うにはどのような方法があるでしょうか?
どのように解決するのですか?
を確認する必要があります。
IsDBNull
:
if(!SqlReader.IsDBNull(indexFirstName))
{
employee.FirstName = sqlreader.GetString(indexFirstName);
}
それが、この状況を検知して対処する唯一の確実な方法です。
私はそれらを拡張メソッドにラップし、カラムが本当にある場合はデフォルト値を返すようにする傾向があります。
null
:
public static string SafeGetString(this SqlDataReader reader, int colIndex)
{
if(!reader.IsDBNull(colIndex))
return reader.GetString(colIndex);
return string.Empty;
}
これで、次のように呼び出すことができます。
employee.FirstName = SqlReader.SafeGetString(indexFirstName);
といった例外が発生する心配はありません。
null
の値を変更することができます。
関連
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】OnCollisionEnter2Dが実行されない?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NETでapp.configやweb.configから設定を読み込む
-
[解決済み】C#で文字列をenumに変換する
-
[解決済み】IEnumerable vs List - What to Use? どのように動作するのでしょうか?
-
[解決済み] 制約の有効化に失敗しました。1つ以上の行が非Null、ユニーク、または外部キー制約に違反する値を含んでいます。
-
[解決済み] Xmlシリアライゼーション - NULL値を隠す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] メンバー '<メンバー名>' にインスタンス参照でアクセスできない
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】WSACancelBlockingCallの例外について
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み] [Solved] .NETでスレッドの終了を待つには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】データが存在しないのに読み込もうとする試みが無効である