🗣 Wd提问: mysql程序go mysql驱动
🤖 Ai回答: 在 Go 语言中,连接和操作 MySQL 数据库通常使用 `database/sql` 包配合第三方驱动。目前最常用、最推荐的 MySQL 驱动是 `go-sql-driver/mysql`。
✅ 步骤一:安装 MySQL 驱动
bash
go get github.com/go-sql-driver/mysql
注意:这个驱动是官方推荐的,兼容性好,支持大部分 MySQL 功能。
✅ 步骤二:导入包并建立连接
go
package main
import (
database/sql
fmt
_ github.com/go-sql-driver/mysql // 注意:导入时需要加下划线,因为是初始化驱动
)
func main() {
// 数据库连接信息
dsn := user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local
// 打开数据库连接
db, err := sql.Open(mysql, dsn)
if err != nil {
panic(err)
}
defer db.Close()
// 测试连接
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println(Connected to MySQL successfully!)
}
✅ 常用操作示例
1、查询数据(Query)
go
rows, err := db.Query(SELECT id, name FROM users)
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
panic(err)
}
fmt.Printf(ID: %d, Name: %s\n, id, name)
}
2、插入数据(Exec)
go
result, err := db.Exec(INSERT INTO users (name, email) VALUES (?, ?), Alice, alice@65.hk)
if err != nil {
panic(err)
}
lastInsertID, err := result.LastInsertId()
if err != nil {
panic(err)
}
fmt.Printf(Inserted record with ID: %d\n, lastInsertID)
3、更新/删除
go
_, err = db.Exec(UPDATE users SET name = ? WHERE id = ?, Bob, 1)
if err != nil {
panic(err)
}
✅ 连接字符串参数说明(DSN)
go
user:password@tcp(host:port)/dbname?param=value
常见参数:
| 参数 | 说明 |
| `charset=utf8mb4` | 使用 UTF-8 编码,支持中文 |
| `parseTime=True` | 允许解析时间字段(如 `datetime`)为 `time.Time` 类型 |
| `loc=Local` | 设置时区为本地时区 |
| `timeout=5s` | 连接超时时间 |
| `readTimeout=10s` | 读取超时 |
✅ 推荐:使用 `sqlx` 提高开发效率
如果你希望更方便地处理结构体映射,可以使用 [jmoiron/sqlx](https://github.com/jmoiron/sqlx):
bash
go get github.com/jmoiron/sqlx
go
import github.com/jmoiron/sqlx
// 示例:查询到结构体
type User struct {
ID int `db:id`
Name string `db:name`
}
var users []User
err := db.Select(&users, SELECT id, name FROM users)
✅ 总结
| 功能 | 推荐方式 |
| 驱动 | `github.com/go-sql-driver/mysql` |
| 连接 | `sql.Open(mysql, dsn)` |
| 查询 | `db.Query()` 或 `db.QueryRow()` |
| 插入/更新 | `db.Exec()` |
| 结构体绑定 | 使用 `sqlx` 更方便 |
如果你有具体的需求(比如事务、连接池、ORM 等),也可以继续提问!
📣 商家广告:





0
IP地址: 214.25.249.152
搜索次数: 0
提问时间: 2025-11-08 12:06:13
🛒 域名购买:
665.net.cn
53.cx
37.com.hk
979.net.cn
naiwang.com.cn
965.net.cn
chang.net.cn
6.tj.cn
sxny.net
219.net.cn
❓️ 热门提问:
动态域名注册
日本空间
减震机柜
VPS云服务器管理
全域定位
深圳到香港多钱
便宜vps搭建
关键词挖掘插件无广告
服务器资源监视
nmap可以扫描域名吗
豌豆Ai站群搜索引擎系统
🌐 域名评估:
Left.ltd
uavtower.cn
vtol.bond
z.hn.cn
vtol.gd.cn
byd.gs.cn
ntnm.cn
83.hk
deepseek.sale
mdfai.com
⛏ 最新挖掘:
凯里酸汤鱼
贵阳烤脑花
都匀毛尖茶
花溪牛肉粉
贵阳烤生蚝
贵阳烤豆腐
贵阳纸包鱼
贵阳特色菜
🖌 热门作画:
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊:
🔗 友情链接:
虚拟主机购买
검색 엔진
ai提问
🧰 站长工具:
Ai工具 whois查询 搜索
📢 温馨提示:本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持:本站由豌豆Ai提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。