C#のDataRowで値がNULLかチェックする

C#にはデータベースから取得したデータをメモリ上に格納する為のクラス「DataSet」や「DataTable」があります。

 

データベースから取り出した値が null かどうかをチェックする場合には注意が必要です。

間違った方法でチェックをしてしまいがちなので、正しい方法を覚えておきましょう。

ダメな例

以下のようなコードではフィールドの値が NULL であるかを正しく判断する事は出来ません。

foreach (DataRow row in dataTable.Rows)
{
    if (null == row["field1"])               //正しく判断できない!
    {
         :
    }
}

DataRowクラスに対して null で比較してはいけません。

正しい例

DataRowクラスのフィールドの値が NULL の場合には DBNull.Value という値がセットされています。

DBNull.Value を使って比較するか、IsNullメソッドを使ってチェックしましょう。

 

DBNull.Valueを使ってチェックする例

foreach (DataRow row in dataTable.Rows)
{
    if (DBNull.Value == row["field1"])
    {
         :
    }
}

IsNullメソッドを使ってチェックする例

foreach (DataRow row in dataTable.Rows)
{
    if (row.IsNull("field1"))
    {
         :
    }
}