运营商'<>'未定义类型' DBNull'和字符串""

时间:2015-04-02 04:55:17

标签: database vb.net

使用下面给出的代码显示一个错误。错误是:Operator '<>' is not defined for type 'DBNull' and string "".帮我找到合适的解决方案。谢谢。

代码:

 If sdr1.Read Then
   If sdr1(1) <> "" Then
     NameLabel.Text = sdr1(0).ToString + " " + sdr1(1).ToString + " " + sdr1(2).ToString
   Else
     NameLabel.Text = sdr1(0).ToString + " " + sdr1(2).ToString
   End If
     dept_id.Text = sdr1(3)
 End If
   sdr1.Close()

5 个答案:

答案 0 :(得分:3)

在任何操作中使用之前,您需要检查您要比较的数据是否为NULL:

If sdr1.Read Then
   If Not IsDbNull(sdr1(1)) Then
     If sdr1(1) <> "" Then
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(1).ToString + " " + sdr1(2).ToString
     Else
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(2).ToString
     End If
    End If
    dept_id.Text = sdr1(3)
End If
   sdr1.Close()

或者你可以简单地使用

If sdr1.Read Then
   If Not IsDbNull(sdr1(1)) Then
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(1).ToString + " " + sdr1(2).ToString
   Else
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(2).ToString
   End If
   dept_id.Text = sdr1(3)
End If
sdr1.Close()

答案 1 :(得分:2)

您的列包含空值。在尝试进行其他比较之前,您必须检查是否为空。

因此...

If DBNull.Value Is sdr1(1) Then
    '  Got a null value from the database.
End If

如果您不关心该值是空还是空 - 只想对它们进行相同处理......

If String.IsNullOrEmpty(sdr1(1)) Then
    '  The value is either null or empty.
End If

答案 2 :(得分:1)

使用If sdr1(1) IsNot "" ThenIf Not IsDBNull(sdr1(1))然后使用<>来获得更好的结果

答案 3 :(得分:0)

使用String.IsNullorEmpty来检查相同的

例如: -

If Not String.IsNullOrEmpty(x) Then
  'Do Something
End If

答案 4 :(得分:0)

使用而不是If函数

try
If sdr1.Read Then
   If Not IsDbNull(sdr1(1)) Then
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(1).ToString + " " + sdr1(2).ToString
   Else
       NameLabel.Text = sdr1(0).ToString + " " + sdr1(2).ToString
   End If
   dept_id.Text = sdr1(3)
End If
Catch ex As Exception

end try