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