执行插入后,可以获取最后插入的ID吗? 这是mysql的一个很常见的功能
只需使用db.Exec并从结果中获取最后插入的ID。
通常,每个CREATE / INSERT / UPDATE / DELETE都应使用db.Exec。
package main
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:pass@/dbname")
if err != nil {
panic("Error opening DB:", err.Error())
}
defer db.Close()
someParam := "value"
if res, err := db.Exec(`INSERT INTO foo VALUES("bar", ?))`, someParam)
if err != nil {
println("Exec err:", err.Error())
} else {
id, err := res.LastInsertId()
if err != nil {
println("Error:", err.Error())
} else {
println("LastInsertId:", id)
}
}
}
也可以看看:
http://golang.org/pkg/database/sql/#DB.Exec
http://golang.org/pkg/database/sql/#Result
谢谢先生!
if err == nil {
println("LastInsertId:", id)
} else {
println("Error:", err.Error())
}
错别字。 我修复了上面的代码。 谢谢!
如何转换int而不是int64?
strconv.Itoa(id) => cannot use id (type int64) as type int in argument to strconv.Itoa
这是一个一般的Go新手问题。 不要在这里问这样的问题。
最有用的评论
只需使用db.Exec并从结果中获取最后插入的ID。
通常,每个CREATE / INSERT / UPDATE / DELETE都应使用db.Exec。
也可以看看:
http://golang.org/pkg/database/sql/#DB.Exec
http://golang.org/pkg/database/sql/#Result