2016-05-13 20 views
-1

私はvb.netでクエリを実行していますが、カラムがnullであるかどうかをテストしたいと思います。私が試してみました:vb.netデータベース値がヌルかどうかを確認してください

If reader.GetString(2) IsNot Nothing Then 

If IsDBNull(reader.GetString(2)) Then 

If reader.GetString(2) IsNot NULL Then 

If NOT reader.GetString(2) IS Nothing Then 

If NOT reader.GetString(2) IS NULL Then 

それらはすべてリターン:私はMySQLの中で私のクエリを実行すると

Data is Null. This method or property cannot be called on Null values. 

は、カラムは問題は内部的にあなたの行をキャストGetString方法であるNULL

+0

「リーダー」はnullですか? – Cortright

答えて

4

を表示します値を文字列に変換します。行の値がnullの場合、例外が発生します。

修正が

Dim result = IF(reader.IsDbNull(2), "", reader.GetString(2)) 

または3番目のフィールドがnullのときにデフォルト値を割り当てたくない場合は、単に

if Not reader.IsDbNull(2) Then 
    ....... 
End if 
+0

代わりに 'IsNotNull'を使用できますか? – charlie

+0

申し訳ありませんがIsNotNull?私はこれに慣れていない。あなたはどこでそれを見つけましたか? – Steve

+0

私はdidnt、それはなぜ私が求めていたthats。またはもし私が行う必要があります 'If Not reader.IsDBNull(2)Then' – charlie

0

を書くことができVB.NET三項演算子を使用しています将来の参照のためだけに:

db値がnullかどうかを確認する方法はいくつかあります。
ここでは完全な名前空間を使用しています。

Dim reader As System.Data.SqlClient.SqlDataReader 
Dim fieldIndex As Integer = 0 

' reader(fieldIndex) is equivalent to reader.Item(fieldIndex) 
Dim fieldValue As Object = reader.Item(fieldIndex) 

Dim isFieldValueNull As Boolean 

' Namespace: System.Data.SqlClient; Class: SqlDataReader 
isFieldValueNull = reader.IsDBNull(fieldIndex) 

' Namespace: Microsoft.VisualBasic; Module: Information 
isFieldValueNull = Microsoft.VisualBasic.IsDBNull(fieldValue) 

' Namespace: System; Class: Convert 
isFieldValueNull = System.Convert.IsDBNull(fieldValue) 

' Namespace: System; Class: DBNull 
isFieldValueNull = System.DBNull.Value.Equals(fieldValue) 

注:DBNull.Value常に持ってDBNullのインスタンスは、したがって、それはNothingことはありません!

データベース値がNULLでないかどうかを確認したい場合は、メソッド呼び出しの前にNotキーワードを入れることができます。

Dim isFieldValueNotNull As Boolean 

isFieldValueNotNull = Not reader.IsDBNull(fieldIndex) 
isFieldValueNotNull = Not Microsoft.VisualBasic.IsDBNull(fieldValue) 
isFieldValueNotNull = Not System.Convert.IsDBNull(fieldValue) 
isFieldValueNotNull = Not System.DBNull.Value.Equals(fieldValue) 
関連する問題