我有一个数据库,其中列中没有值(所以它是null
),但我无法在vb.net中处理此问题。我试过这段代码:
reader.Read()
If String.IsNullOrEmpty(reader.GetString(0)) Then
Return
Else
tilbulfolderTextBox.Text = reader.GetString(0)
End If
以及:
If reader.Read() = False Then
和:
If IsDBNull(reader.Read()) Then
但显然它不起作用,因为我在Else
之后的语句中得到了异常,我用这种方法得不到Null
值。
我想你会通过阅读代码本身来弄清楚我对程序的要求。
答案 0 :(得分:7)
定义DbDataReader基础对象的IsDBNull方法来处理这种情况 当然,如果reader.Read()返回false(意味着没有更多的行可用),你就不能尝试阅读。
If reader.Read() Then
If reader.IsDBNull(0) Then
Return
Else
tilbulfolderTextBox.Text = reader.GetString(0)
End If
End If
另外,我没有看到更多的代码,但请记住,如果不关闭连接并处理此操作中涉及的对象,以这种方式返回可能是非常错误的
而且,是的,正如其他人所指出的那样,Microsoft.VisualBasic程序集中还有一个名为IsDBNull的函数,但是,我更喜欢使用.NET框架中定义的类提供的方法而不是提供的方法。与以前版本的VB兼容
答案 1 :(得分:3)
您应该使用IsDbNull
函数将其与null
进行比较:
reader.Read()
If IsDbNull(reader(0)) OrElse String.IsNullOrEmpty(reader.GetString(0)) Then
Return
Else
tilbulfolderTextBox.Text = reader.GetString(0)
End If
答案 2 :(得分:2)
.Net有一个不同的类型来处理SQL NULL:DbNull
。
查看此帖子有关如何处理它的信息:handling dbnull data in vb.net
在您的情况下,您需要IsDbNull
功能,请检查此MSDN Documentation。
If IsDbNull(data) Then
return
Else
tilbulfolderTextBox.Text = data
End If
答案 3 :(得分:2)
使用IsDBNull函数确保DataReader中的值为null。然后继续进行代码流程。
答案 4 :(得分:2)
听起来你的IF可能无法正常工作
尝试使用IsDBNull。
IsDBNull是一个布尔变量,可以像下面这样使用;
reader.Read()
If Not IsDbNull(reader.GetString(0)) Then
tilbulfolderTextBox.Text = reader.GetString(0)
Else
return
End If
答案 5 :(得分:2)
试试这个
reader.Read()
If IsDbNull(reader.GetString(0)) Then
Return
Else
tilbulfolderTextBox.Text = reader.GetString(0)
End If