[C#]DataRowの値がNullかチェックする方法

DataRow項目がNullかをチェックを行う際、nullと比較してもうまく判定できません。

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

Nullチェックの方法

DataRowのIsNullメソッドを使用するか、DBNull.Valueと比較します。 次のサンプルを実行すると"nullです。"のメッセージは表示されません。DataRowにnullをセットしてもDBNull.Valueに変換されるためです。

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

// データテーブルに列を追加
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です。");
}

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

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

検証環境

関連ページ