[VB.NET]DataRowの値がNullかチェックする方法

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

※C#での解説はこちらです。

Nullチェックの方法

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

関連記事:[VB.NET]DataRowにNothingを設定すると例外が発生する

' データテーブルに列を追加
Dim dataTable As DataTable = New DataTable()
dataTable.Columns.Add("col_String", GetType(System.String))

' -------------------------------------------------------
' Nothingを設定
' -------------------------------------------------------
Dim row As DataRow = dataTable.NewRow()
' ※これは悪い例です。正しくはDBNull.Valueをセットします。
row("col_String") = Nothing
' 正しいコード
'row("col_String") = DBNull.Value

' -------------------------------------------------------
' NULLの判定
' -------------------------------------------------------

If row.IsNull("col_String") Then
    ' 表示される
    MessageBox.Show("IsNULLです。")
End If

If row("col_String") Is DBNull.Value Then
    ' 表示される
    MessageBox.Show("DBNull.Valueです。")
End If

If row("col_String") Is Nothing Then
    ' 表示されない
    MessageBox.Show("Nothingです。")
End If

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

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

検証環境

関連ページ