当可空整数获取空值时不执行该命令

时间:2016-09-13 09:43:38

标签: vb.net nullable

我有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可以为空。我错过了什么?请帮忙

1 个答案:

答案 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"))