database/sql 包使用
1. 引入包与数据库驱动
使用 database/sql 需要配合具体数据库驱动,例如 MySQL 使用 github.com/go-sql-driver/mysql:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
注意驱动包需要匿名导入。
2. 打开数据库连接
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
sql.Open 不会立即建立连接,第一次操作时会自动连接。
3. 执行查询
查询单行
var name string
err = db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
查询多行
rows, err := db.Query("SELECT id, name FROM users")
defer rows.Close()
for rows.Next() {
var id int
var name string
err = rows.Scan(&id, &name)
}
4. 执行插入、更新、删除
result, err := db.Exec("UPDATE users SET name=? WHERE id=?", "Alice", 1)
affected, err := result.RowsAffected()
5. 事务管理
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
_, err = tx.Exec("INSERT INTO users(name) VALUES(?)", "Bob")
if err != nil {
tx.Rollback()
return
}
tx.Commit()
6. 连接池设置
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(5)
db.SetConnMaxLifetime(time.Hour)
database/sql 包提供统一的数据库访问接口,结合具体驱动即可操作多种关系型数据库,适用于各种应用场景。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。