我的数据库表没有订购

mic*_*cha 0 mysql vb.net asp.net

有时当我向数据库中的表插入一个新行时,它会出现在最后一行之前.

我会解释.如果我有下表:

ID Name
1 James
2 Terry
3. Miriam
4. Arthur

我想用"Danny"插入一个新行,有时这会发生:

ID Name
1 James
2 Terry
3. Miriam
5. Danny
4. Arthur

我的代码在99%的情况下工作,但有时它只是发生.我不知道该怎么办?这是正常的吗?

我在ID列上使用带有autoIncrement的ASP.NET,VB.NET,.NET 3.5和MySQL数据库.我已经看到它也发生在Access和SQL Server中.

这是我的代码:

  ' insert to user_table
    Dim connString As String = ConfigurationManager.ConnectionStrings("mysql_ConnString").ConnectionString
    Dim conn As MySqlConnection = New MySqlConnection(connString)
    Dim sqlCommand As String

    sqlCommand = "INSERT INTO user_table (Nickname,Email,Pass,SubscriptionMode,SignupDate,LastVisitDate,VisitCounter) VALUES (@Nickname,@Email,@Pass,@SubscriptionMode,@SignupDate,@LastVisitDate,@VisitCounter)"

    Dim cmd As New MySqlCommand(sqlCommand, conn)

    Try
        conn.Open()
        cmd.Parameters.AddWithValue("@Nickname", txtNickname.Text)
        cmd.Parameters.AddWithValue("@Email", txtEmail.Text)
        cmd.Parameters.AddWithValue("@Pass", password)
        cmd.Parameters.AddWithValue("@SubscriptionMode", 1)
        cmd.Parameters.AddWithValue("@SignupDate", Date.Now)
        cmd.Parameters.AddWithValue("@LastVisitDate", Date.Now)
        cmd.Parameters.AddWithValue("@VisitCounter", 0)
        cmd.ExecuteNonQuery()
    Catch ex As Exception
        GlobalFunction.sendToLog(ex, "problem in create profile page - sub: insertUser_table")
        GlobalFunction.jsMessage(Me, "problem in create profile page - sub: insertUser_table")
        Return False
    Finally
        conn.Close()
    End Try
Run Code Online (Sandbox Code Playgroud)

Bal*_*a R 7

一般来说,当你这样做

select * from Users
Run Code Online (Sandbox Code Playgroud)

你不能依赖记录的顺序.如果您需要按特定顺序记录,则必须明确指定一个order by子句

select * from Users order by ID
Run Code Online (Sandbox Code Playgroud)