在向数据库添加新数据后添加新数据时,我的数据库中出现ID错误。
Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click
Call setconnection()
Try
cd = New OleDbCommand("select * from stud ", cn)
dr = cd.ExecuteReader
While dr.Read = True
TextBox345.Text = dr.Item(0) + 1
End While
dr.Close()
cn.Close()
Catch ex As Exception
MsgBox("Invalid Customer id! ")
End Try
Call setconnection1()
Try
cd = New OleDbCommand("select * from instud ", cn)
dr = cd.ExecuteReader
While dr.Read = True
TextBox423.Text = dr.Item(0) + 1
End While
dr.Close()
cn.Close()
Catch ex As Exception
MsgBox("Invalid Customer id! ")
End Try
End Sub
此代码会自动为所有流中的每个学生生成新ID,例如在1-1000的普通BSc中 计算机科学1001-2000 Bio Tech 2001-3000 IT 3001-4000
我遇到的错误是,在添加新数据一段时间后,ID在一定数量后不会增加。 我也找到了为什么会这样做的原因: 在datagirdview中,当我添加10个学生详细信息时,最后一个ID是10 并且它在ID 1之前放置下一个ID即11,因此我的代码将最后一个ID的值保持为10并且不再继续! 请帮助我卡住!!
答案 0 :(得分:2)
我很确定有更好的方法可以做你正在做的事情,但是从我能从有限的代码中看到的,我认为你想要获得最大的价值。而不是循环遍历所有列表并将每个数字设置为相同的文本框,获取最大数字然后进行设置。
而不是
While dr.Read = True
TextBox345.Text = dr.Item(0) + 1
End While
试试这个
Dim maxId as Integer = 0
While dr.Read = True
If maxId < dr.Item(0) Then maxId = dr.Item(0)
End While
TextBox345.Text = maxId + 1
如果您想获得最高ID,那么更好的方法是直接从数据库中获取它。
select max(id) from stud