处理DBNull数据

时间:2015-06-18 12:56:46

标签: .net vb.net sql-server-2008 dbnull

我正在为一个datarow对象分配另一个datarow对象的值。 例如:

newAddress.AddrId     = frenchAddress.AddrId
newAddress.AddrLn1    = frenchAddress.AddrLn1
newAddress.AddrLn2    = frenchAddress.AddrLn2
newAddress.AddrLn3    = frenchAddress.AddrLn3
newAddress.AddrCityNm = frenchAddress.AddrCityNm
newAddress.CntryId    = frenchAddress.CntryId
newAddress.ProvId     = frenchAddress.ProvId

frenchAddress中的某些值可能为NULL,因此我最终会收到异常,因为我正在为newAddress分配DBNull的值。处理DBNull的最佳和最干净的方法是什么?无论如何只要在NULL

的位置插入DBNull

使用VB.Net。

3 个答案:

答案 0 :(得分:1)

由于这是一个类型化的DataRow(所以具有命名属性的自动生成类型)已经存在用于此目的的方法:

If frenchAddress.IsAddrCityNmNull Then
    newAddress.SetAddrCityNmNull()
Else
    newAddress.AddrCityNm = frenchAddress.AddrCityNm
End If 

如果它不是类型而是标准DataRow,您可以使用支持可空类型的SetField方法,也应该处理这种情况:

newAddress.SetField("ColumnName", frenchAddress.Field(Of String)("ColumnName"))

答案 1 :(得分:1)

您可以将IsDbNull函数与If语句一起使用,例如:

newAddress.AddrLn1 = If (IsDbNull(frenchAddress.AddrLn1), String.Empty, frenchAddress.AddrLine1)

答案 2 :(得分:0)

这最终成为我使用的解决方案,上面两个答案之间有点混合。它似乎工作正常:

newAddress.AddrLn1 = If(frenchAddress.IsAddrLn1Null = True, Nothing, frenchAddress.AddrLn1)