在VB.NET中将dbNull转换为字符串的简单方法

use*_*280 3 vb.net dbnull

我正在寻找一种更简单的方法来检查一个值是否为dbNull并将其转换为空字符串(如果是这样).

我需要这种情况的一个例子是:

Dim dt As New DataTable
Dim conn As New OleDbConnection(someConnStr)
Dim adap As New OleDbDataAdapter(qryCSSInfo, cssConn)
adap.Fill(dt)


Dim someStr As String = "The first column of the first row returned: " & dt.rows(0).item(0)
Msgbox(someStr)
Run Code Online (Sandbox Code Playgroud)

问题是如果dt.rows(0).item(0)在数据库中为空,它将作为dbNull值返回,这显然不会附加到字符串.

我对这个问题的解决方案是使用if语句用空字符串替换值:

Dim dt As New DataTable
Dim conn As New OleDbConnection(someConnStr)
Dim adap As New OleDbDataAdapter(qryCSSInfo, cssConn)
adap.Fill(dt)


If Not isDBNull(dt.rows(0).item(0)) then
     Dim someStr As String = "The first column of the first row returned: " & dt.rows(0).item(0)
Else
     Dim someStr As String = "The first column of the first row returned: " & ""
End If
Msgbox(someStr)
Run Code Online (Sandbox Code Playgroud)

这适用于我的目的,但如果我必须对表中需要使用的每一列进行此检查,它会变得无法控制.假设我有10个列,我想用这个字符串显示.我必须对每一个进行检查以确保它们不为空.这样做有更简单或更简单的方法吗?

har*_*man 9

对于字符串类型,您可以直接使用它dt.rows(0).item(0).ToString(),没有If条件

adap.Fill(dt)

Dim someStr As String = "The first column of the first row returned: " & dt.rows(0).item(0).ToString()

MsgBox(somestr)
Run Code Online (Sandbox Code Playgroud)

即你可以完全省略if语句.根据MSDN,任何DBNull值都将转换为EmptyString.ToString()

还要检查此SO 转换后的类型'DBNull'到'String'类型

但是,对于非字符串数据库列类型(如整数,双精度数),必须使用检查IsDBNull来避免任何异常.