技术文摘
Golang 如何使用 MySQL 数据库
Golang 如何使用 MySQL 数据库
在Golang开发中,与MySQL数据库交互是常见需求。下面将介绍如何在Golang项目里使用MySQL数据库。
需要安装MySQL驱动。目前广泛使用的是go-sql-driver/mysql,通过命令go get -u github.com/go-sql-driver/mysql即可完成安装。
接着,在代码中引入必要的包:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
这里的database/sql是Go标准库中用于数据库操作的包,而_ "github.com/go-sql-driver/mysql"是引入MySQL驱动,下划线表示只执行包的初始化代码,不使用包中的导出标识符。
然后,进行数据库连接。连接MySQL数据库的代码如下:
func connectDB() (*sql.DB, error) {
dsn := "user:password@tcp(127.0.0.1:3306)/database_name"
db, err := sql.Open("mysql", dsn)
if err!= nil {
return nil, err
}
err = db.Ping()
if err!= nil {
return nil, err
}
return db, nil
}
在dsn中,需要填入实际的用户名、密码、数据库地址和数据库名。sql.Open用于打开数据库连接,db.Ping用于测试连接是否成功。
执行SQL查询是使用数据库的重要部分。例如,执行简单的查询操作:
func queryData(db *sql.DB) {
rows, err := db.Query("SELECT column1, column2 FROM table_name")
if err!= nil {
fmt.Println("查询失败:", err)
return
}
defer rows.Close()
for rows.Next() {
var column1 string
var column2 int
err := rows.Scan(&column1, &column2)
if err!= nil {
fmt.Println("扫描结果失败:", err)
return
}
fmt.Printf("column1: %s, column2: %d\n", column1, column2)
}
}
db.Query用于执行查询语句,返回rows结果集。通过rows.Next遍历结果集,rows.Scan将结果集中的数据扫描到定义的变量中。
插入、更新和删除操作与查询类似。以插入操作为例:
func insertData(db *sql.DB) {
stmt, err := db.Prepare("INSERT INTO table_name (column1, column2) VALUES (?,?)")
if err!= nil {
fmt.Println("准备语句失败:", err)
return
}
defer stmt.Close()
result, err := stmt.Exec("value1", 123)
if err!= nil {
fmt.Println("执行插入失败:", err)
return
}
lastInsertId, err := result.LastInsertId()
if err!= nil {
fmt.Println("获取插入ID失败:", err)
return
}
fmt.Printf("插入成功,最后插入ID: %d\n", lastInsertId)
}
db.Prepare用于准备SQL语句,防止SQL注入。stmt.Exec执行插入操作,result.LastInsertId获取最后插入的ID。
在Golang中使用MySQL数据库并不复杂,通过合理使用标准库和驱动,能高效地完成数据库的各种操作,为开发稳定、高效的应用程序提供支持。
TAGS: 数据库操作 Golang MySQL数据库 Golang与MySQL
- Win11 强制删除 DLL 流氓文件的技巧
- 解决 Win11/10 中 cldflt.sys 蓝屏错误的办法
- Win11 截图工具升级 新增任意截图功能及使用方法
- Win11 远程设备拒绝连接的解决之道
- Win11 中硬盘序列号的位数及查询方法
- Win11 升级卡“请稍等”及更新错误的修复办法
- Win11 内存泄露的原因剖析及解决途径
- Win11 笔记本摄像头自动开启的应对策略
- Win11 中 TranslucentTB 的卸载方法
- Win11 蜘蛛纸牌的位置及玩法
- macOS Sonoma 14.2 正式版今日推出 附更新内容汇总
- Win11 Moment 5 预计于 2 月 27 日推送 新功能令人期待
- 统信 UOS V20 桌面专业版(1060)11 月更新发布及内容汇总
- 统信 UOS 桌面操作系统 V20 专业版(1060)年度更新官宣
- 华为纯血鸿蒙 HarmonyOS NEXT 开发者预览版首批 Beta 招募启动,涵盖 Mate 60/Pro