我目前在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检查是不是整数它只是要崩溃了我。
使用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
。