SQL データ リーダー - Null 列値の処理 質問する

SQL データ リーダー - Null 列値の処理 質問する

SQLdatareader を使用して、データベースから POCO を構築しています。コードは、データベースで null 値が検出された場合を除いて機能します。たとえば、データベースの FirstName 列に null 値が含まれている場合、例外がスローされます。

employee.FirstName = sqlreader.GetString(indexFirstName);

このような状況で null 値をどのように処理すればよいでしょうか?

ベストアンサー1

以下を確認する必要があります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値について心配する必要がなくなります。

おすすめ記事