如何在vb.net中将阅读器的字符串值转换为整数值

时间:2018-06-24 16:09:26

标签: vb.net

我正在使用此代码获取s_no的最大值,然后将其递增1。 但是当数据库没有值时,它将读取空值,以及如何检查空值并将其转换为整数

cmd3 = New SqlCommand("select max(S_no) from dbo.place", con)
        dr1 = cmd3.ExecuteReader()
        If (IsNumeric(dr1.Read())) Then
            s_no = Integer.Parse(dr1.ToString()) + 1
        Else

2 个答案:

答案 0 :(得分:1)

您应该按照soohoonigan在评论中的建议致电ExecuteScalar,但您不能仅将结果转换为类型Integer,因为如果没有记录,您仍然会得到NULL 。使用SQL,您应该执行以下操作:

Dim result = cmd3.ExecuteScalar()
Dim number = If(result Is DBNull.Value, 0, CInt(result))

这样,如果没有记录,您将得到0,并且递增记录将得到1作为第一个值。

另一种选择是,如果没有记录,则将SQL更改为返回0:

select isnull(max(S_no), 0) from dbo.place

然后保证您ExecuteScalar返回Integer

Dim number = CInt(cmd3.ExecuteScalar())

答案 1 :(得分:0)

您可以检查列是否为null(此处为列0):

If dr1.IsDBNull(0) Then ...

如果其不为null,则可以使用读取

s_no = dr1.GetInt32(0)

如果查询返回一行一行,则可以ExecuteScalar代替:

Dim result As Object = cmd3.ExecuteScalar()
If result Is DBNull.Value Then
    'HANDLE NULL
Else
    s_no = Convert.ToInt32(result)
End If