Golang连接MySQL数据库教程
要使用Golang连接MySQL,首先安装驱动并导入包,接着建立连接,然后执行查询或操作数据,最后注意资源管理和错误处理。1.安装依赖包:运行goget-ugithub.com/go-sql-driver/mysql,并在代码中导入database/sql和\_github.com/go-sql-driver/mysql;2.建立连接:使用sql.Open("mysql","user:password@tcp(127.0.0.1:3306)/dbname"),记得用deferdb.Close()关闭连接;
要使用Golang连接MySQL,首先安装驱动并导入包,接着建立连接,然后执行查询或操作数据,最后注意资源管理和错误处理。1. 安装依赖包:运行go get -u github.com/go-sql-driver/mysql,并在代码中导入database/sql和\_github.com/go-sql-driver/mysql;2. 建立连接:使用sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname"),记得用defer db.Close()关闭连接;3. 查询与操作:单行查询用QueryRow().Scan(),多行查询用Query()配合循环,插入数据用Exec(),同时使用?占位符防止SQL注入;4. 注意事项:设置连接池db.SetMaxOpenConns和SetMaxIdleConns,每次rows使用后调用Close(),始终检查error,可选结构体映射简化操作。

连接MySQL数据库是Go语言开发中非常常见的需求,尤其是在做Web后端、数据处理或服务间通信时。用Golang操作MySQL其实并不难,只要掌握几个关键点就能快速上手。

安装必要的依赖包
要使用Golang连接MySQL,首先需要引入一个驱动程序。官方的database/sql包本身不包含具体的数据库驱动,而是通过接口来调用第三方驱动。常用的MySQL驱动是 github.com/go-sql-driver/mysql。

你可以使用如下命令安装:
go get -u github.com/go-sql-driver/mysql
安装完成后,在代码中导入这个包即可:

import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)注意下划线 _ 是为了触发驱动的初始化,让 sql.Open 能识别 mysql 这个协议名。
建立数据库连接
建立连接的核心函数是 sql.Open(),它接受两个参数:数据库类型和连接字符串。
示例代码如下:
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
panic(err)
}
defer db.Close()其中:
user:password是数据库用户名和密码;tcp(127.0.0.1:3306)表示数据库服务器地址;/dbname是你要连接的数据库名称。
小贴士:连接字符串格式还可以支持更多选项,比如参数设置、SSL连接等。例如加上
?charset=utf8mb4&parseTime=True来指定字符集和自动解析时间字段。
别忘了在最后用 defer db.Close() 来关闭连接,避免资源泄漏。
查询与操作数据
连接成功之后,就可以进行查询和写入操作了。下面是一个简单的查询例子:
var id int
var name string
err = db.QueryRow("SELECT id, name FROM users WHERE id = ?", 1).Scan(&id, &name)
if err != nil {
panic(err)
}
fmt.Println(id, name)这里有几个关键点需要注意:
- 使用
QueryRow()只获取一行结果; - 用
Scan()把查询结果映射到变量; - 使用
?占位符防止SQL注入。
如果是多行查询,可以用 Query() 方法配合循环处理:
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
if err := rows.Scan(&id, &name); err != nil {
panic(err)
}
fmt.Println(id, name)
}插入数据也很简单,使用 Exec() 方法执行SQL语句:
result, err := db.Exec("INSERT INTO users(name, age) VALUES (?, ?)", "Tom", 25)
if err != nil {
panic(err)
}
lastId, _ := result.LastInsertId()
fmt.Println("Last inserted ID:", lastId)注意事项和常见问题
在实际开发中,有几个细节容易被忽略但很重要:
连接池管理:
sql.DB实际上已经自带了连接池机制,可以通过以下方法设置最大连接数:db.SetMaxOpenConns(10) db.SetMaxIdleConns(5)
错误处理不能省略:每一步操作都可能出错,比如网络中断、SQL语法错误、字段类型不匹配等,必须检查返回的
error。不要忘记关闭 Rows:每次使用完
rows后一定要调用rows.Close(),否则可能会导致连接泄露。使用结构体简化映射(进阶):可以结合
sqlx或gorm等库,把查询结果直接映射到结构体字段中,减少手动赋值的工作量。
基本上就这些内容了。虽然看起来步骤不少,但流程很清晰,只要记住基本的API和注意事项,就能轻松完成Golang连接MySQL的操作。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















