Go 语言中,golang结合 PostgreSQL 、MySQL驱动 开启数据库事务
- PostgreSQL
- 代码说明:
- MySQL
- 代码说明:
PostgreSQL
在 Go 语言中,使用 database/sql
包结合 PostgreSQL 驱动(如 github.com/lib/pq
)可以方便地开启和管理数据库事务。
以下是一个示例,展示了如何在 PostgreSQL 中开启一个事务、执行一些操作,并在最后提交或回滚事务。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/lib/pq" // 使用 PostgreSQL 驱动
)
func main() {
// 连接到数据库
connStr := "user=username dbname=mydb password=mypassword host=localhost sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 开始一个事务
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
// 执行一些数据库操作
_, err = tx.Exec("INSERT INTO users (name) VALUES ($1)", "x302")
if err != nil {
// 如果出错,回滚事务
tx.Rollback()
log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO users (name) VALUES ($1)", "nw10999")
if err != nil {
// 如果出错,回滚事务
tx.Rollback()
log.Fatal(err)
}
// 提交事务
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
fmt.Println("事务已成功提交")
}
代码说明:
- 连接数据库:使用
sql.Open
连接到 PostgreSQL 数据库,连接字符串中包含用户名、数据库名、密码和主机信息。 - 开启事务:调用
db.Begin()
开始一个新的事务。 - 执行操作:使用
tx.Exec
执行 SQL 语句,注意使用$1
作为参数占位符。 - 错误处理:如果在执行过程中发生错误,调用
tx.Rollback()
回滚事务。 - 提交事务:如果所有操作成功,调用
tx.Commit()
提交事务。
确保在使用前安装 PostgreSQL 驱动,例如 github.com/lib/pq
。
MySQL
在 Go 语言中,使用 database/sql
包可以很方便地开启和管理MySQL数据库事务。
以下是一个简单的示例,展示了如何开启一个数据库事务、执行一些操作,并在最后提交或回滚事务。
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql" // 使用 MySQL 驱动
)
func main() {
// 连接到数据库
db, err := sql.Open("mysql", "user:password@/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 开始一个事务
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
// 执行一些数据库操作
_, err = tx.Exec("INSERT INTO users (name) VALUES (?)", "X302")
if err != nil {
// 如果出错,回滚事务
tx.Rollback()
log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO users (name) VALUES (?)", "nw10999")
if err != nil {
// 如果出错,回滚事务
tx.Rollback()
log.Fatal(err)
}
// 提交事务
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
fmt.Println("事务已成功提交")
}
代码说明:
- 连接数据库:使用
sql.Open
连接到数据库。 - 开启事务:调用
db.Begin()
开始一个新的事务。 - 执行操作:使用
tx.Exec
执行 SQL 语句。 - 错误处理:如果在执行过程中发生错误,调用
tx.Rollback()
回滚事务。 - 提交事务:如果所有操作成功,调用
tx.Commit()
提交事务。
确保在使用前安装相应的数据库驱动,例如 MySQL 驱动 github.com/go-sql-driver/mysql
。