go-sql-driver 是 Go 语言中一个常用的 MySQL 数据库驱动程序,支持 MySQL5.5、MySQL5.6 和 MySQL5.7。本文将介绍如何使用 go-sql-driver 包连接 MySQL 数据库。
在命令行中使用以下命令安装:
复制代码
go get -u github.com/go-sql-driver/mysql
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
}
在 Open
函数中传递的第一个参数是驱动名,第二个参数是连接字符串。连接字符串包括了用户名、密码、主机名和数据库名等信息。
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// 执行查询语句
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
panic(err.Error())
}
defer rows.Close()
// 遍历数据并输出结果
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
panic(err.Error())
}
fmt.Println(id, name)
}
// 执行更新语句
_, err = db.Exec("UPDATE users SET name = ? WHERE id = ?", "John", 1)
if err != nil {
panic(err.Error())
}
}
在上述代码中,我们使用 Query 函数执行一条查询语句,并用 Scan 函数将结果保存到变量中。执行更新语句则使用了 Exec 函数。需要注意的是,go-sql-driver 包会自动将占位符 ? 转换成 MySQL 中真正的占位符。
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
tx, err := db.Begin()
if err != nil {
panic(err.Error())
}
// 执行 SQL 语句...
_, err = tx.Exec("INSERT INTO users (name) VALUES (?)", "Alice")
if err != nil {
tx.Rollback()
panic(err.Error())
}
_, err = tx.Exec("INSERT INTO users (name) VALUES (?)", "Bob")
if err != nil {
tx.Rollback()
panic(err.Error())
}
err = tx.Commit()
if err != nil {
tx.Rollback()
panic(err.Error())
}
}
在使用事务操作时,需要调用 db.Begin()
创建事务,然后在事务中执行 SQL 语句。
如果执行过程中发生了错误,可以通过 tx.Rollback()
回滚事务,或者在所有 SQL 语句执行成功后通过 tx.Commit()
提交事务。
以上就是 go-sql-driver 包的基本使用,通过这个包可以轻松地在 Go 语言程序中连接数据库并执行 SQL 语句。