当前位置: 首页 > 工具软件 > go-db > 使用案例 >

Go中 go-sql-driver 的使用

孔宇
2023-12-01

go-sql-driver 是 Go 语言中一个常用的 MySQL 数据库驱动程序,支持 MySQL5.5、MySQL5.6 和 MySQL5.7。本文将介绍如何使用 go-sql-driver 包连接 MySQL 数据库。

安装

在命令行中使用以下命令安装:

复制代码

go get -u github.com/go-sql-driver/mysql

连接 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 函数中传递的第一个参数是驱动名,第二个参数是连接字符串。连接字符串包括了用户名、密码、主机名和数据库名等信息。

执行 SQL 语句

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 语句。

 类似资料: