2

我有一个数据库,其中列中没有值(所以它是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使用此方法获取值之后的语句中出现异常。我想你会通过阅读代码本身找出我对程序的要求。

4

6 回答 6

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版本

于 2013-04-23T10:36:51.887 回答
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
于 2013-04-23T10:37:02.527 回答
2

.Net 有一种不同的类型来处理 SQL NULL:DbNull.

查看这篇关于如何处理它的帖子:在 vb.net 中处理 dbnull 数据

在您的情况下,您需要该IsDbNull功能,请查看此MSDN 文档

If IsDbNull(data) Then
    return
Else
    tilbulfolderTextBox.Text = data
End If
于 2013-04-23T10:34:21.547 回答
2

使用IsDBNull函数确保来自 DataReader 的值是否为空。然后继续代码流程。

于 2013-04-23T10:35:16.667 回答
2

听起来您的 IF 可能无法正常工作

尝试改用 IsDBNull。

IsDBNull 是一个布尔变量,可以像下面这样使用;

reader.Read()

If Not IsDbNull(reader.GetString(0)) Then
    tilbulfolderTextBox.Text = reader.GetString(0)
Else
    return
End If
于 2013-04-23T10:36:18.640 回答
2

试试这个

reader.Read()
        If IsDbNull(reader.GetString(0)) Then
            Return
        Else
            tilbulfolderTextBox.Text = reader.GetString(0)
        End If
于 2013-04-23T10:37:09.567 回答