Go database/sql 数据库访问入门
Go database/sql 数据库访问入门
Go 标准库的 database/sql 提供了统一的数据库访问接口。它不绑定具体数据库,需要配合 MySQL、PostgreSQL、SQLite 等驱动使用。
一、打开连接池
1 | db, err := sql.Open("mysql", dsn) |
sql.Open 创建的是连接池对象,不一定立即连接数据库。可以用 PingContext 检查连接。
二、查询单行
1 | var name string |
如果没有数据,通常会返回 sql.ErrNoRows。
三、查询多行
1 | rows, err := db.QueryContext(ctx, "select id, name from users") |
遍历后还要检查 rows.Err(),避免漏掉迭代过程中的错误。
四、执行写操作
1 | result, err := db.ExecContext(ctx, "delete from users where id = ?", id) |
写操作要关注影响行数,尤其是更新和删除。
五、实践建议
数据库访问函数建议都接收 context.Context,这样请求取消或超时时,数据库操作也能及时结束。
另外,不要手动拼接 SQL 参数,优先使用占位符,降低 SQL 注入风险。