Go语言实战案例-连接MySQL数据库

一、准备工作

1. 安装 MySQL

如果你本地还没有 MySQL,可以通过以下方式安装:

  • • Windows/Mac 用户:从 MySQL 官方网站 下载并安装。
  • • Linux 用户:sudo apt install mysql-server # Debian/Ubuntu
    sudo yum install mysql-server # CentOS

启动 MySQL:

mysql -u root -p

2. 创建测试数据库与表

登录 MySQL 后执行:

CREATE DATABASE go_demo;
USE go_demo;

CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT
);

INSERT INTO users (name, age) VALUES
(‘Alice’, 25),
(‘Bob’, 30);

二、安装 MySQL 驱动

Go 并没有内置 MySQL 驱动,需要安装第三方驱动 go-sql-driver/mysql

go get -u github.com/go-sql-driver/mysql

三、代码实现

main.go

package main

import (
“database/sql”
“fmt”
“log”

_ “github.com/go-sql-driver/mysql” // MySQL 驱动
)

func main() {
// 1. 定义 MySQL DSN(数据源名称)
dsn := “root:password@tcp(127.0.0.1:3306)/go_demo?charset=utf8mb4&parseTime=True&loc=Local”

// 2. 打开数据库连接(并不会立即建立物理连接)
db, err := sql.Open(“mysql”, dsn)
if err != nil {
log.Fatalf(“连接数据库失败: %v”, err)
}
defer db.Close()

// 3. 测试连接是否可用
if err := db.Ping(); err != nil {
log.Fatalf(“无法连接到数据库: %v”, err)
}
fmt.Println(“成功连接到 MySQL 数据库!”)

// 4. 查询数据
rows, err := db.Query(“SELECT id, name, age FROM users”)
if err != nil {
log.Fatalf(“查询失败: %v”, err)
}
defer rows.Close()

for rows.Next() {
var id int
var name string
var age int
if err := rows.Scan(&id, &name, &age); err != nil {
log.Fatalf(“读取数据失败: %v”, err)
}
fmt.Printf(“用户ID:%d, 姓名:%s, 年龄:%d\n”, id, name, age)
}
}

四、运行结果

假设我们已经启动了 MySQL 并且数据已插入,执行:

go run main.go

输出:

成功连接到 MySQL 数据库!
用户ID:1, 姓名:Alice, 年龄:25
用户ID:2, 姓名:Bob, 年龄:30

五、注意事项
1. DSN 格式
username:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=True&loc=Local
• parseTime=True 让 MySQL 日期类型自动解析为 time.Time。
• charset=utf8mb4 支持 Emoji 等多字节字符。
2. 连接池设置
在生产环境中应设置连接池:
db.SetMaxOpenConns(10) // 最大连接数
db.SetMaxIdleConns(5) // 最大空闲连接数

  1. 3. 错误处理
    每次执行查询或写入操作时,都要检查 err

六、总结
• Go 使用 database/sql 配合 go-sql-driver/mysql 可以方便地连接 MySQL。
• 连接数据库的关键步骤:安装驱动 → 配置 DSN → 打开连接 → Ping 测试。
• 在生产环境中,要注意连接池、错误处理、以及防止 SQL 注入(使用 Prepare 或参数化查询)。

欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!

66源码网 » Go语言实战案例-连接MySQL数据库

提供最优质的资源集合

立即查看 了解详情