1. ホーム
  2. c#

[解決済み] 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 の値を変更することができます。