检查绑定数据表是否为空值vb.net

时间:2015-04-13 17:45:07

标签: sql vb.net datatable null

我目前正在使用sql后端的vb.net windows表单应用程序中工作。我有两个数据表绑定到两个独立的sql语句,并返回两个非常简单的数据表。我只需要检查两个表中的任何一个表中是否有空值。第一个查询返回单个值,实际上是单个单元格。我总是在dgv中使用以下代码来检查null

Dim Check As Integer = dt.Rows(1).cells(1).value

然而这在这里不起作用,似乎是因为数据类型是整数。通常使用DGV我正在进行点击事件,并且从最终用户可以看到dgv。

第二个sql查询只是2个单元格。因为它有2行和1列,我需要检查两个单元格,以确保它们都不为空。

我一直在网上寻找,但我找不到任何对我有用的东西。

------------------------更新---------------------- ------

 Public Shared Function ToInt32(Value As Object) As Integer
    If DBNull.Value.Equals(Value) Then
        Return 0
    Else
        Return Convert.ToInt32(Value)
    End If
End Function



  Dim ncheck As Integer
  ncheck = SafeConvert.ToInt32(dt.Rows(1)(1))

我如何在if语句中使用此ncheck来运行exit子句和消息框?在我看来,如果ncheck不是一个整数,它就会崩溃我。

2 个答案:

答案 0 :(得分:4)

以下是一组安全转换方法,您可以将它们用作共享方法,也可以将它们转换为扩展名:

Class SafeConvert   
    Public Shared Function ToInt32(Value As Object) As Integer
        If DBNull.Value.Equals(Value) Then
            Return 0
        Else
            Return Convert.ToInt32(Value)
        End If
    End Function

    Public Shared Function ToInt64(Value As Object) As Int64
        If DBNull.Value.Equals(Value) Then
            Return 0
        Else
            Return Convert.ToInt64(Value)
        End If
    End Function

    Public Shared Function ToDecimal(Value As Object) As Decimal
        If DBNull.Value.Equals(Value) Then
            Return 0
        Else
            Return Convert.ToDecimal(Value)
        End If
    End Function

    Public Shared Shadows Function ToString(Value As Object) As String
        If DBNull.Value.Equals(Value) Then
            Return String.Empty
        Else
            Return Convert.ToString(Value)
        End If
    End Function

End Class

示例:

Dim nCheck As Integer
nCheck = SafeConvert.ToInt32(dt.Rows(1)(1))
' or
nCheck = SafeConvert.ToInt32(dt.Rows(0).Item(1))

当然,该行必须有效且在该索引处有一个单元格,这只是测试DBNull,而不是NullReference

答案 1 :(得分:2)

使用DbNull.Value

   If Not DbNull.Value.Equals(dt.Rows(1).Item(1).value) Then 
      ' do something
   Else 
      ' do something else 
   End If

或使用

If dt.Rows(1).Item(1).value=DbNull.Value