C# - DataRowの値がNullか判定する方法

DataRow項目がNullかをチェックを行う際、nullと比較してもうまく判定できません。IsNullメソッド を使用するか、DBNull.Value と比較します。

※VB.NETでの解説はこちらです。

Nullをチェックする方法

DataRowの IsNullメソッド を使用するか、DBNull.Value と比較します。
if (row.IsNull("カラム名"))
{
    MessageBox.Show("NULLです。");
}

if (row["カラム名"] == DBNull.Value)
{
    MessageBox.Show("NULLです。");
}

サンプルコード

次のサンプルを実行すると "nullです。" のメッセージは表示されません。DataRowに null をセットしても DBNull.Value に変換されるためです。
// データテーブルに列を追加
DataTable dataTable = new DataTable();
dataTable.Columns.Add("col_String", typeof(System.String));

// -------------------------------------------------------
// NULLを設定
// -------------------------------------------------------
DataRow row = dataTable.NewRow();
// ※これは悪い例です。正しくはDBNull.Valueをセットします。
row["col_String"] = null;
// 正しいコード
// row["col_String"] = DBNull.Value;

// -------------------------------------------------------
// NULLの判定
// -------------------------------------------------------

if (row.IsNull("col_String"))
{
    // 表示される
    MessageBox.Show("IsNULLです。");
}

if (row["col_String"] == DBNull.Value)
{
    // 表示される
    MessageBox.Show("DBNull.Valueです。");
}

if (row["col_String"] == null)
{
    // 表示されない
    MessageBox.Show("nullです。");
}

関連記事:[C#]DataRowにNullを設定すると例外が発生する

サンプルコードのダウンロード

サンプルコードの実行には Microsoft Visual Studio 2008 以上のバージョンが必要です。 2008以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。

検証環境

関連ページ