我正在使用此代码获取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
答案 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