在 Go 语言开发中,database/sql 是官方提供的用于操作关系型数据库的标准包。无论你是新手还是有一定经验的开发者,掌握 Go语言 database/sql 数据库操作 都是构建后端服务的重要基础。
database/sql 是 Go 标准库的一部分,它提供了一套统一的接口来操作各种 SQL 数据库(如 MySQL、PostgreSQL、SQLite 等)。但需要注意的是:database/sql 本身不包含数据库驱动,你必须额外导入对应的数据库驱动包(例如 github.com/go-sql-driver/mysql)。
首先,你需要安装 MySQL 的 Go 驱动:
go get -u github.com/go-sql-driver/mysql
注意:虽然你导入了驱动包,但在代码中通常只用其副作用(即初始化驱动),所以导入时使用空白标识符 _。
使用 sql.Open() 函数建立数据库连接。该函数接收两个参数:驱动名称和数据源名称(DSN)。
package mainimport ( "database/sql" "fmt" "log" _ "github.com/go-sql-driver/mysql" // 使用空白标识符导入驱动)func main() { // DSN 格式: username:password@tcp(host:port)/dbname dsn := "root:password@tcp(127.0.0.1:3306)/testdb" db, err := sql.Open("mysql", dsn) if err != nil { log.Fatal(err) } defer db.Close() // 验证连接是否有效 if err := db.Ping(); err != nil { log.Fatal(err) } fmt.Println("成功连接到 MySQL 数据库!")} 这段代码展示了如何安全地连接 MySQL 数据库。记住调用 defer db.Close() 来确保程序退出前关闭连接。
查询分为两类:查询单行(QueryRow)和查询多行(Query)。
var name stringerr := db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)if err != nil { if err == sql.ErrNoRows { fmt.Println("未找到用户") } else { log.Fatal(err) }} else { fmt.Printf("用户姓名: %s\n", name)} rows, err := db.Query("SELECT id, name FROM users WHERE age > ?", 18)if err != nil { log.Fatal(err)}defer rows.Close()for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { log.Fatal(err) } fmt.Printf("ID: %d, 姓名: %s\n", id, name)}// 检查遍历过程中是否有错误if err = rows.Err(); err != nil { log.Fatal(err)} 这些操作统称为“执行语句”(Exec),它们不返回结果集,而是返回受影响的行数。
// 插入数据result, err := db.Exec("INSERT INTO users (name, age) VALUES (?, ?)", "张三", 25)if err != nil { log.Fatal(err)}lastInsertID, _ := result.LastInsertId()rowsAffected, _ := result.RowsAffected()fmt.Printf("新插入的 ID: %d, 影响行数: %d\n", lastInsertID, rowsAffected)// 更新数据db.Exec("UPDATE users SET age = ? WHERE name = ?", 26, "张三")// 删除数据db.Exec("DELETE FROM users WHERE name = ?", "张三") defer rows.Close() 关闭查询结果集。*sql.DB 实例(它是并发安全的)。? 占位符)防止 SQL 注入。db.SetMaxOpenConns() 等方法)以提升性能。通过本教程,你应该已经掌握了 Go语言 database/sql 数据库操作 的基本用法。无论是查询、插入还是更新,database/sql 都提供了简洁而强大的接口。建议你在实际项目中多加练习,并参考官方文档深入学习高级特性。
记住,良好的数据库操作习惯是构建高性能、安全应用的关键。希望这篇 Go语言 database/sql 教程 能帮助你顺利入门!
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025128453.html