0

在将新数据添加到数据库后添加新数据时,我的数据库中出现 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 计算机科学 1001-2000 生物技术 2001-3000 IT 3001-4000 开始的普通 BSc

我面临的错误是,在添加新数据一段时间后,ID 在某个数字后不会增加。我也找到了这样做的原因:在 datagirdview 中,当我添加 10 个学生详细信息时,最后一个 ID 是 10,它将下一个 ID 即 11 放在 ID 1 之前,因此我的代码一直将最后一个 ID 的值设为 10 和不再继续!!!请帮助我卡住了!!

4

1 回答 1

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 
于 2013-07-29T12:45:04.670 回答