检查绑定数据表的空值 vb.net

check bound datatable for null value vb.net

我目前正在 vb.net windows 表单应用程序中工作,后端是 sql。我有两个数据表绑定到两个独立的 sql 语句和两个 return 两个非常简单的数据表。我只需要独立检查两个表中的任何一个是否有空值。第一个查询 return 是单个值,实际上是单个单元格。我一直在 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 运行 退出子和消息框?在我看来,如果 ncheck 不是整数,我就会崩溃。

使用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

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

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