Go语言操作MySQL数据库完整示例与细节解析

巷口听风
巷口听风
发布时间:2026-10-14 | 2人浏览过
原创

Go语言操作关系型数据库主要依赖标准库 database/sql 配合具体的数据库驱动(如 github.com/go-sql-driver/mysql)。本示例展示了从建立连接、执行参数化插入到查询遍历结果的完整流程,重点解析了Go中与日期时间处理相关的特殊语法及注意事项。

开发准备与环境配置

在开始编写代码前,需要确保本地已安装 Go 语言环境并配置好 GOPATH 或 Go Modules。本项目需要引入两个核心组件:

  • 标准库:database/sql,提供数据库操作的接口规范。
  • 第三方驱动:github.com/go-sql-driver/mysql,实现 MySQL 协议的驱动。

测试用表结构如下,用于验证插入和查询功能:

create table t(
    id int primary key auto_increment,
    name varchar(20) not null,
    ts timestamp
);

建立数据库连接

在 main 函数中,首先需要获取数据库连接句柄。Go 使用 sql.Open 打开数据源名称(DSN)。

db, err := sql.Open("mysql", "xx:xx@tcp(127.0.0.1:3306)/mvbox?charset=utf8")
if err != nil {
    log.Fatalf("Open database error: %s\n", err)
}
defer db.Close()

注意:此时并未真正建立网络连接。为了确保连接可用,必须调用 Ping 方法进行验证:

err = db.Ping()
if err != nil {
    log.Fatal(err)
}

执行插入操作与时间处理

数据库操作推荐使用 Prepare 语句以实现参数化查询,防止 SQL 注入。在 Go 中,占位符为 ?(MySQL 驱动自动转换)。

第1步:预处理插入语句

目的:编译 SQL 语句以提高后续执行效率。

复制代码 代码如下:
package main import ( "database/sql" _ "github.com/go-sql-driver/mysql" "log" "time" ) func insert(db *sql.DB) { // 预处理 SQL,注意 Go 中使用 "?" 作为占位符 stmt, err := db.Prepare("insert into t(name,ts) values(?,?)") defer stmt.Close() if err != nil { log.Println(err) return } // 关键点:Go 的时间解析基准时间为 "2006-01-02 15:04:05" ts, _ := time.Parse("2006-01-02 15:04:05", "2014-08-28 15:04:00") // 执行插入 _, err = stmt.Exec("edmond", ts) if err != nil { log.Println("Insert error:", err) } }

时间处理说明:Java等语言拥有流畅的日期API,而Go默认解析时间字符串依赖于特定的锚定时间 Mon Jan 2 15:04:05 MST 2006。在代码中需严格遵循此格式定义时间布局。

第2步:查询数据与结果遍历

目的:从数据库中读取记录并映射到Go变量。

  1. 发起查询:使用 db.Query 返回行集合。
  2. 安全扫描:通过循环调用 rows.Scan 将列数据赋值给 Go 变量。
rows, err := db.Query("select id,name,ts from t where id>?", 1)
if err != nil {
    log.Println(err)
}
defer rows.Close()

var id int
var name string
var ts string

// 遍历每一行
for rows.Next() {
    err := rows.Scan(&id, &name, &ts)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(id, name, ts)
}

// 检查遍历过程中的错误
err = rows.Err()
if err != nil {
    log.Fatal(err)
}

总结

通过以上步骤,我们完成了 Go 语言连接 MySQL 的核心流程。掌握 database/sql 的基本用法、正确配置 DSN、处理时间戳格式以及规范的资源释放(defer close),是构建稳定 Go 后端应用的基础。以上就是Go语言操作MySQL数据库完整示例与细节解析的详细内容,更多关于Go数据库编程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表