无法使用 Visual Basic 代码将对象从 DBNull 转换为其他类型
Object cannot be cast from DBNull to other types with visual basic code
我已将虚拟数据添加到我的 SQL 数据库中。
当我尝试 运行 时 VB 它返回一个空错误。
我所做的是从数据库中删除虚拟数据,使其不再读取空值。
即使在删除它之后,VB 文件仍然会抛出错误,就像空值仍然存在一样。
我有 运行 一个 sql 脚本要检查,我可以确认它不再存在。
这是抛出错误的代码行。
If Date.Now.AddDays(LoadsFilter * -1) > Convert.ToDateTime(myReader(2)) Then
ShowLoad = 0
End If
我对 vb 还是很陌生,所以我不确定在这里该做什么。
我正在考虑传递一个方法来读取空值,但我已经删除了空值。我不知道该怎么做,有人可以帮忙吗?
不需要任何转换。数据 reader 有自己的空值测试方法和获取适当类型数据的方法,例如
If Not myDataReader.IsDBNull(2) Then
Dim dt = myDataReader.GetDateTime(2)
'Use dt here.
End If
您也可以使用单行来获取 Nullable(Of Date)
:
Dim dt = If(myDataReader.IsDBNull(2), New Date?, myDataReader.GetDateTime(2))
请注意,如果您更喜欢使用列名而不是索引,这样可以使您的代码更清晰,那么您可以使用GetOrdinal
方法,因为其他方法仅支持索引:
Dim dt = If(myDataReader.IsDBNull(myDataReader.GetOrdinal("ColumnName")),
New Date?,
myDataReader.GetDateTime(myDataReader.GetOrdinal("ColumnName")))
我已将虚拟数据添加到我的 SQL 数据库中。 当我尝试 运行 时 VB 它返回一个空错误。
我所做的是从数据库中删除虚拟数据,使其不再读取空值。 即使在删除它之后,VB 文件仍然会抛出错误,就像空值仍然存在一样。 我有 运行 一个 sql 脚本要检查,我可以确认它不再存在。
这是抛出错误的代码行。
If Date.Now.AddDays(LoadsFilter * -1) > Convert.ToDateTime(myReader(2)) Then
ShowLoad = 0
End If
我对 vb 还是很陌生,所以我不确定在这里该做什么。 我正在考虑传递一个方法来读取空值,但我已经删除了空值。我不知道该怎么做,有人可以帮忙吗?
不需要任何转换。数据 reader 有自己的空值测试方法和获取适当类型数据的方法,例如
If Not myDataReader.IsDBNull(2) Then
Dim dt = myDataReader.GetDateTime(2)
'Use dt here.
End If
您也可以使用单行来获取 Nullable(Of Date)
:
Dim dt = If(myDataReader.IsDBNull(2), New Date?, myDataReader.GetDateTime(2))
请注意,如果您更喜欢使用列名而不是索引,这样可以使您的代码更清晰,那么您可以使用GetOrdinal
方法,因为其他方法仅支持索引:
Dim dt = If(myDataReader.IsDBNull(myDataReader.GetOrdinal("ColumnName")),
New Date?,
myDataReader.GetDateTime(myDataReader.GetOrdinal("ColumnName")))