Как получить ID вставки после вставки данных в MySQL [дубликаты]

0

У меня есть таблица данных Mysql со следующими данными:

ID (int format) [AUTO_INCREMENT] 
date (varchar) 
ip (varchar)
activate(varchar) 
cdkey(varchar)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using SQLConnection As New MySqlConnection(ConnectionString)
            Using sqlCommand As New MySqlCommand()
                With sqlCommand
                    .CommandText = "INSERT INTO software ('date', 'ip', 'activate', 'cdkey') values (@date,@ip,@activate,@cdkey)"
                    .Connection = SQLConnection
                    .CommandType = CommandType.Text
                    .Parameters.AddWithValue("@ip", Label1.Text)
                    .Parameters.AddWithValue("@date", TextBox2.Text)
                    .Parameters.AddWithValue("@activate", "Yes")
                    .Parameters.AddWithValue("@cdkey", textbox4.Text)



                End With
                Try
                    SQLConnection.Open()
                    sqlCommand.ExecuteNonQuery()
                    iReturn = True
                    MsgBox("Display Last Insert ID here")

                Catch ex As MySqlException
                    MsgBox(ex.Message.ToString)
                    iReturn = False
                Catch ex As Exception
                Finally
                    SQLConnection.Close()
                End Try
            End Using
        End Using
        Return
    End Sub

он работает, за исключением того, что я пытаюсь получить идентификационный номер из базы данных после ввода этих данных. Как я могу это сделать?

  • 1
    Эти вопросы сбивают с толку, а ответы не ясны. Это ясный вопрос и удивительный ответ.
Теги:
visual-studio

1 ответ

1
Лучший ответ

Вы должны изменить свой запрос на

  .CommandText = "INSERT INTO software ('date', 'ip', 'activate', 'cdkey') 
                  values (@date,@ip,@activate,@cdkey);
                  SELECT LAST_INSERT_ID();"

Затем вместо ExecuteNonQuery вы вызываете ExecuteScalar и возвращаете значение из LAST_INSERT_ID()

   Dim newID As Integer = sqlCommand.ExecuteScalar()
  • 0
    Вы удалили вызов ExecuteNonQuery? ExecuteScalar выполняет как INSERT, так и SELECT, когда они разделены точкой с запятой
  • 0
    Я использовал два execuescalar, один для insdert и один для запроса. Удаление, которое исправило проблему. Спасибо большое за вашу помощь
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню