我希望为从MS-Access数据库检索并存储在DataTable对象/变量myDataTable中的数据生成一些格式化输出。但是,myDataTable中的某些字段包含dbNull数据。因此,如果lastname、intials或sID字段中的任何一个字段的值为dbNull,则下面的VB.net代码片段将显示错误。
dim myDataTable as DataTable
dim tmpStr as String
dim sID as Integer = 1
...
myDataTable = myTableAdapter.GetData() ' Reads the data from MS-Access table
...
For Each myItem As DataRow In myDataTable.Rows
tmpStr = nameItem("lastname") + " " + nameItem("initials")
If myItem("sID")=sID Then
' Do something
End If
' print tmpStr
Next
那么,当字段可能包含dbNull时,如何让上面的代码工作,而不必像this question中那样每次都检查数据是否为dbNull
发布于 2009-11-13 01:10:11
我厌倦了处理这个问题,所以我写了一个NotNull()函数来帮助我解决这个问题。
Public Shared Function NotNull(Of T)(ByVal Value As T, ByVal DefaultValue As T) As T
If Value Is Nothing OrElse IsDBNull(Value) Then
Return DefaultValue
Else
Return Value
End If
End Function
用法:
If NotNull(myItem("sID"), "") = sID Then
' Do something
End If
多年来,我的NotNull()函数经历了几次大修。在泛型之前,我只是简单地将所有内容都指定为对象。但我更喜欢通用版本。
发布于 2008-10-21 18:09:58
您还可以使用Convert.ToString()和Convert.ToInteger()方法有效地转换DB null项。
发布于 2012-03-31 13:52:59
名义上与nullable
类型一起使用的Steve Wortham's code的变体:
Private Shared Function GetNullable(Of T)(dataobj As Object) As T
If Convert.IsDBNull(dataobj) Then
Return Nothing
Else
Return CType(dataobj, T)
End If
End Function
例如:
mynullable = GetNullable(Of Integer?)(myobj)
然后您可以查询mynullable
(例如,mynullable.HasValue
)
https://stackoverflow.com/questions/222834
复制相似问题