检查空值约束的DataTable vb.net检查空值约束的DataTable vb.net(che

2019-05-12 10:40发布

我目前在vb.net windows窗体应用程序的工作与SQL后端。 我有绑定到两个独立的SQL语句都返回两个很简单的数据表两个DataTable。 我只需要检查,看看是否有处于或者两个表的空值,独立。 所述第一查询返回单个值,字面上的单个细胞。 我一直用下面的代码在DGV检查null

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

然而,这是不是在这里工作,这似乎是因为数据类型是整数。 通常用DGV我做一个点击事件,并从DGV最终用户可以看到我拉。

第二个SQL查询仅2细胞。 正如有两行和一列,我需要检查两个单元,以确保他们都不是零。

我一直在网上四处寻找,但我无法找到任何东西,似乎为我工作。

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

 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))

我怎么会用这个n检查的if语句运行出口子和一个消息框? 在我看来,如果n检查是不是整数它只是要崩溃了我。

Answer 1:

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


Answer 2:

下面是一组您可以使用作为共享的方法或许将其转换为扩展安全转换方法:

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



文章来源: check bound datatable for null value vb.net