vb.net - 从数据库中读取空值

时间:2013-04-23 10:30:25

标签: sql vb.net

我有一个数据库,其中列中没有值(所以它是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值。 我想你会通过阅读代码本身来弄清楚我对程序的要求。

6 个答案:

答案 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