找到要插入的记录的主键

时间:2014-03-25 13:17:41

标签: mysql sql vb.net

我的mysql数据库包含一个包含以下字段的表:matchID, userID, puzzleID

其中match ID是主键,并且已设置为auto increment

代码如下:

query = "INSERT INTO matches(UserID, PuzzleID) VALUES('" & UserID _
           & "','" & puzzleID & "')"
da.InsertCommand = New MySqlCommand(query, conn)
Try
  da.InsertCommand.ExecuteNonQuery()
Catch ex As Exception
  MsgBox(ex.Message)
  exit sub
End Try

然后我需要获取新插入行的MatchID以进行下一步处理。

我的问题是:

当主键未primary key时,是否可以获得insert statement的{​​{1}}?

3 个答案:

答案 0 :(得分:1)

您可以在一个命令中组合两个sql语句,并使用ExecuteScalar检索最后一个语句的结果

query = "INSERT INTO matches(UserID, PuzzleID) VALUES(@uid, @pid);" & _ 
        "SELECT LAST_INSERT_ID();"
Dim cmd = New MySqlCommand(query, conn)
cmd.Parameters.AddWithValue("@uid", userID)
cmd.Parameters.AddWithValue("@pid", puzzleID)
Dim result = Convert.ToInt32(cmd.ExecuteScalar())

请注意,在向数据库后端提交命令时,应始终使用参数化查询。如果使用字符串连接和用户输入构建命令文本,则会暴露于Sql Injection并解析问题。

答案 1 :(得分:0)

我的sql使用

提供最后一个插入ID
SELECT LAST_INSERT_ID();

答案 2 :(得分:0)

您还可以使用SELECT MAX查询显示最后插入的ID的编号

 query = "SELECT MAX(matchID)"