当可空整数得到空值时不执行命令
When nullable integer got null value not executing the command
我有 VB.Net 代码,该代码从 db 中获取值,如果它为空,则做一些工作
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
Else 语句工作正常但第一部分不工作。 token 是可为空的短。我缺少什么?请帮忙
该代码没有意义。您正在呼叫 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"))
我有 VB.Net 代码,该代码从 db 中获取值,如果它为空,则做一些工作
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
Else 语句工作正常但第一部分不工作。 token 是可为空的短。我缺少什么?请帮忙
该代码没有意义。您正在呼叫 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"))