如何在 go 中执行原生 sql 查询:导入必要包(如 database/sql 和数据库驱动程序)。打开数据库连接。使用 db.prepare 方法准备 sql 语句。使用 stmt.query 方法执行查询,提供动态值。使用 rows.next 和 rows.scan 遍历查询结果。关闭数据库连接以释放资源。

如何在 Golang 中执行原生 SQL 查询?
Golang 提供了一种强大的 SQL 数据库包,允许您使用原生 SQL 查询与关系型数据库进行交互。本教程将指导您如何使用 Golang 执行原生 SQL 查询,并提供一个实战案例。
导入必要的包
立即学习“go语言免费学习笔记(深入)”;
首先,您需要导入必要的包:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)注意:不同的数据库将需要其自己的驱动程序。有关支持的驱动程序的列表,请参阅 [godoc](https://godoc.org/database/sql/driver)。
打开数据库连接
接下来,打开一个数据库连接:
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
log.Fatal(err)
}确保将 user, password, host, port和database替换为相应的值。
准备 SQL 语句
要准备 SQL 查询,请使用 Prepare 方法:
stmt, err := db.Prepare("SELECT * FROM users WHERE name = ?")
if err != nil {
log.Fatal(err)
}这将创建一个预编译的 SQL 语句,用于稍后执行。?占位符表示将在执行期间替换的动态值。
执行 SQL 查询
要使用指定的动态值执行查询,请使用 Query 方法:
rows, err := stmt.Query("John")
if err != nil {
log.Fatal(err)
}这将返回一个 Rows 对象,它包含查询结果。
处理查询结果
要遍历查询结果,请使用 Scan 方法:
for rows.Next() {
var id int
var name string
if err := rows.Scan(&id, &name); err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}关闭数据库连接
最后,关闭数据库连接以释放资源:
db.Close()
实战案例
以下是一个实战案例,演示如何向数据库中插入一条记录并获取它:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql" // MySQL 驱动程序
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(host:port)/database")
if err != nil {
log.Fatal(err)
}
defer db.Close()
stmt, err := db.Prepare("INSERT INTO users (name) VALUES (?)")
if err != nil {
log.Fatal(err)
}
_, err = stmt.Exec("Jane")
if err != nil {
log.Fatal(err)
}
stmt, err = db.Prepare("SELECT * FROM users WHERE name = ?")
if err != nil {
log.Fatal(err)
}
rows, err := stmt.Query("Jane")
if err != nil {
log.Fatal(err)
}
for rows.Next() {
var id int
var name string
if err := rows.Scan(&id, &name); err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
}以上就是如何使用 Golang 执行原生 SQL 查询?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号