检查绑定数据表的空值 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
。
我目前正在 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
。