mysql - 插入语句未使用正确的自动增量插入

标签 mysql vb.net insert

例如,表中当前有 3 行,主键为 0、1 和 3。我希望它填补空白,因此下一个插入语句应该采用主键 2。但是,它并没有这样做。

Private Sub btnSubmit_Click(sender As Object, e As EventArgs) Handles btnSubmit.Click
    Dim msg As String = ""

    If Validate.CheckAddress(txtAddress.Text) And _
       Validate.CheckEmailAddress(txtEmailAddress.Text) And _
       Validate.CheckPhoneNumber(txtPhoneNumber.Text) And _
       Validate.CheckPostcode(txtPostcode.Text) Then

        MsgBox("correct validation")

        Dim Admin As Integer = 0
        Dim Query As String

        If chkAdmin.Checked Then
            Admin = 1
        Else
            Admin = 0
        End If

        If Not frmLogin.User.DoesUserExist(CInt(lblUserIDValue.Text)) Then  'if user doesnt exist
            Query = "INSERT INTO tbluser (Admin, UserForename, UserSurname, Username, Password, UserPhoneNumber, UserAddress, UserPostcode, UserEmailAddress) VALUES (@admin, @forename, @surname, @username, @password, @phonenumber, @address, @postcode, @emailaddress)"
            MsgBox("we are inserting")
        Else
            Query = "UPDATE tbluser SET Admin=@admin, UserForename=@forename, UserSurname=@surname, Username=@username, UserAddress=@address, UserPostcode=@postcode, UserEmailAddress=@emailaddress WHERE UserID=@userID"
            MsgBox("we are updating")
        End If

        Using Conn As New MySqlConnection(MySQL.ConnectionDetails)
            Using Comm As New MySqlCommand()
                With Comm
                    .Connection = Conn
                    .CommandText = Query
                    .CommandType = CommandType.Text
                    .Parameters.AddWithValue("@admin", Admin)
                    .Parameters.AddWithValue("@forename", txtForename.Text)
                    .Parameters.AddWithValue("@surname", txtSurname.Text)
                    .Parameters.AddWithValue("@username", (txtForename.Text + txtSurname.Text.First + txtPhoneNumber.Text.Last.ToString)) 'firstname + first letter of surname + last number of phone number
                    .Parameters.AddWithValue("@password", "password")
                    .Parameters.AddWithValue("@phonenumber", txtPhoneNumber.Text)
                    .Parameters.AddWithValue("@address", txtAddress.Text)
                    .Parameters.AddWithValue("@postcode", txtPostcode.Text)
                    .Parameters.AddWithValue("@emailaddress", txtEmailAddress.Text)
                    .Parameters.AddWithValue("@userID", CInt(lblUserIDValue.Text))
                End With
                Try
                    Conn.Open()
                    If Comm.ExecuteNonQuery() Then
                        MsgBox("Successfull ")
                        Me.Dispose()
                    End If
                Catch ex As MySqlException
                    msg += "MySQL Exception " & ex.GetBaseException.ToString
                End Try
            End Using
       End Using

   Else

       If (Validate.CheckAddress(txtAddress.Text) = False) Then
           msg += "Not a valid address " & Environment.NewLine
       End If
       If (Validate.CheckEmailAddress(txtEmailAddress.Text) = False) Then
           msg += "Not a valid email address " & Environment.NewLine
       End If
       If (Validate.CheckPhoneNumber(txtPhoneNumber.Text) = False) Then
           msg += "Not a valid phone number " & Environment.NewLine
       End If
       If (Validate.CheckPostcode(txtPostcode.Text) = False) Then
           msg += "Not a valid postcode "
       End If

    End If

    If (msg <> "") Then
        MessageBox.Show("The following problems were found: " & Environment.NewLine & msg, "User - Error(s)", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End If

End Sub

最佳答案

  1. 使用 TRUNCATE TABLE table_name 截断表
  2. 按所需顺序插入行

关于mysql - 插入语句未使用正确的自动增量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34096079/

相关文章:

php/mysql事务

MySQL查询问题匹配新行

网站数据库MySQL错误1064

mysql - 将 select 授予除 Table1 之外的所有表

.net - 如何获取和设置通用 Windows 应用程序的音频音量级别

vb.net - VB6 DLL 将回调作为 Integer,VB.NET 需要委托(delegate)引用类型

php - mysql_insert_id() 回显 0

MySQL : collect the sum of the associated values

mysql - 如何告诉 SQL 使用另一个表作为输入值来运行命令?

JavaScript indexOf() 函数在 VB.Net 中失败