我有VB.Net代码,它从db获取值,如果它为null,则执行一些工作
While reader.Read
tocken = reader.GetInt16("Tocken_No")
If tocken.HasValue = False Then
TxtPTocken.Text = 1
Else
TxtPTocken.Text = tocken + 1
End If
End While
其他声明正常工作但第一部分没有。 tocken可以为空。我错过了什么?请帮忙
答案 0 :(得分:0)
该代码没有意义。您正在呼叫GetInt16
,这意味着您将获得Int16
。您的tocken
变量可能是Nullable(Of Short)
类型,但您要为其指定一个值,因此HasValue
始终为True
。
您的问题是,如果您的数据库字段为NULL,那么您的代码将抛出异常。如果没有可用的预期类型的值,则GetIn16
之类的方法会失败。由你来检查NULL并相应地处理它:
tocken = If(reader.IsDBNull(reader.GetOrdinal("Tocken_No")),
CType(Nothing, Short?),
reader.GetInt16("Tocken_No"))