首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在vb.net中处理dbnull数据

在vb.net中处理dbnull数据
EN

Stack Overflow用户
提问于 2008-10-21 18:03:09
回答 8查看 258.3K关注 0票数 79

我希望为从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

EN

回答 8

Stack Overflow用户

发布于 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()函数经历了几次大修。在泛型之前,我只是简单地将所有内容都指定为对象。但我更喜欢通用版本。

票数 35
EN

Stack Overflow用户

发布于 2008-10-21 18:09:58

您还可以使用Convert.ToString()和Convert.ToInteger()方法有效地转换DB null项。

票数 11
EN

Stack Overflow用户

发布于 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)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/222834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档