2016-05-13 3 views
-1

Я запускаю запрос в vb.net, и я хочу проверить, является ли столбец нулевым. я попробовал: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 

но все они возвращаются:

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

, когда я запускаю мой запрос в MySQL, столбцы показывают NULL

+0

Является ли «читатель» нулевым? – Cortright

ответ

4

Проблема заключается метод GetString, что внутренне отбрасывать свою строку значение для строки. Если значение строки равно null, вы получаете исключение.

Исправление использует тройной оператор VB.NET

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

или если вы не хотите, чтобы присвоить значение по умолчанию, когда третье поле равно нулю можно было бы просто написать

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

Могу я использовать 'IsNotNull' вместо этого? – charlie

+0

Извините, но IsNotNull? Я не знаком с этим. Где вы его нашли? – Steve

+0

i didnt, вот почему я спрашивал. или должен ли я делать 'If Not reader.IsDBNull (2) Then' – charlie

0

Только для справок в будущем:

У вас есть несколько способов проверить, не является ли значение db или нет.
Примеры приведены здесь с полным пространством имен.

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) 
Смежные вопросы