在VB.net中增加数据库中的ID

时间:2013-07-29 06:22:36

标签: vb.net

在向数据库添加新数据后添加新数据时,我的数据库中出现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并且不再继续! 请帮助我卡住!!

1 个答案:

答案 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