VB.NET - DataRowの値がNullか判定する方法

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

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

Nullをチェックする方法

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

If row("カラム名") Is DBNull.Value Then
    MessageBox.Show("NULLです。")
End If

サンプルコード

次のサンプルを実行すると "Nothingです。" のメッセージは表示されません。DataRowに Nothing をセットしても DBNull.Value に変換されるためです。
' データテーブルに列を追加
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
関連記事:[VB.NET]DataRowにNothingを設定すると例外が発生する

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

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

検証環境

関連ページ