Vb.net 生成自定义自动编号
我想通过编码生成自动编号。 因此,我需要从sql server获取上一个自动编号,然后自动编号+1以生成下一个编号。 但是因为我的数据库还没有任何记录。所以温度应该等于1。 但是为什么我会得到temp=0Vb.net 生成自定义自动编号,vb.net,Vb.net,我想通过编码生成自动编号。 因此,我需要从sql server获取上一个自动编号,然后自动编号+1以生成下一个编号。 但是因为我的数据库还没有任何记录。所以温度应该等于1。 但是为什么我会得到temp=0 Dim con As New SqlConnection(myConn) Dim myReader As SqlDataReader Dim temp As Int64 con.Open() Dim sql As String = "SELECT MA
Dim con As New SqlConnection(myConn)
Dim myReader As SqlDataReader
Dim temp As Int64
con.Open()
Dim sql As String = "SELECT MAX(Auto_No) FROM Quotation_No"
Dim comm As SqlCommand = New SqlCommand(sql, con)
con.Open()
myReader = comm.ExecuteReader
If myReader.HasRows Then
Do While myReader.Read()
Loop
Else
temp = 1
End If
Frm1.txtQuotation_No.Text = temp
con.Close()
摆脱对myReader.Read()的第一次调用,这是您的问题 您的读取器始终返回1行(即使数据库中没有行,也会返回一个结果(0或null)) 您的代码执行的操作如下所示:
你的问题是什么?您发布了代码,这很好,但请编辑您的文章,以便更容易理解。由于数据库中还没有行,
myReader.HasRows
应返回False
。查看myReader.HasRows返回的内容。从表面上看,出于某种原因,此条件的计算结果似乎为True
。myReader.HasRows返回True。但我的数据库还没有任何记录。请直接在后端数据库系统上尝试此查询,从引号中选择count(*)as cnt\u No
并查看它返回了什么。本质上是max()
函数返回一行(偶数null
),即使基础数据库表中没有行。因此,即使表中没有行,此条件myReader.HasRows
也将为真。那么,我应该为我的编码更改什么?取消对myReader.Read()的第一次调用