我使用此代码来获取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
发布于 2018-06-25 01:00:51
您应该按照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())
https://stackoverflow.com/questions/51011682
复制相似问题