DataRow項目がNullかをチェックを行う際、nullと比較してもうまく判定できません。IsNullメソッド を使用するか、DBNull.Value と比較します。
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以外のバージョンではプロジェクトを開いた際にファイルの変換が必要な場合があります。その場合は変換後に実行してください。検証環境
- Microsoft Visual Studio 2008 Version 9.0.30729.4462 QFE Edition: Professional
- Microsoft .NET Framework Version 3.5 SP1
- Microsoft Windows 7 Professional Service Pack 1 (Microsoft Windows NT 6.1 (7601))