全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货  >  详情

Golang中的数据库编程连接MySQL等数据库操作实战

来源:千锋教育
发布人:xqq
2023-12-25

推荐

在线提问>>

介绍

Golang 作为一门高性能的编程语言,一直以来受到许多开发人员的青睐。Golang 中的数据库编程,尤其是 MySQL 数据库的操作,是一个非常常见的需求。本文将详细介绍如何在 Golang 中进行 MySQL 数据库的连接和操作。

环境准备

在开始之前,我们需要先安装 MySQL 数据库和 Golang 环境。

- 安装 MySQL 数据库

为了方便起见,我们可以安装 MySQL 的 Docker 镜像。具体操作方法如下:

docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

其中 -p 参数指定了容器内部 MySQL 服务的端口号,-e 参数指定了 MySQL 的 root 用户密码,-d 参数表示使用后台运行模式。

- 安装 Golang 环境

我们可以从官网下载 Golang 环境,也可以使用系统包管理器安装 Golang。

连接 MySQL 数据库

首先,我们需要使用 Golang 的 database/sql 包实现 MySQL 数据库的连接。具体代码如下:

go

package main

import (

"database/sql"

"fmt"

_ "github.com/go-sql-driver/mysql"

)

func main() {

// 数据库连接信息

dataSourceName := fmt.Sprintf("%s:%s@(%s:%d)/%s", "root", "123456", "127.0.0.1", 3306, "mysql")

// 连接数据库

db, err := sql.Open("mysql", dataSourceName)

if err != nil {

panic(err.Error())

}

// 关闭数据库连接

defer db.Close()

}

在这个代码中,我们使用 fmt.Sprintf 函数根据数据库连接信息构造了一个数据源名称字符串。然后,我们使用 sql.Open 函数连接 MySQL 数据库,如果连接失败,则会通过 panic` 函数抛出异常。数据库操作实战连接成功后,我们就可以使用 database/sql 包提供的接口进行数据库操作了。接下来,我们罗列一些常见的数据库操作 和示例代码:- 查询操作`go// SQL 查询语句querySQL := "SELECT name, age, gender FROM users WHERE id = ?"// 执行 SQL 查询语句rows, err := db.Query(querySQL, 1)if err != nil {    panic(err.Error())}// 解析 SQL 查询结果for rows.Next() {    var name string    var age int    var gender string    err := rows.Scan(&name, &age, &gender)    if err != nil {        panic(err.Error())    }    fmt.Println(name, age, gender)}

- 插入操作

`go

// SQL 插入语句

insertSQL := "INSERT INTO users(name, age, gender) VALUES(?, ?, ?)"

// 执行 SQL 插入语句

result, err := db.Exec(insertSQL, "张三", 18, "男")

if err != nil {

panic(err.Error())

}

// 获取插入数据的 ID

id, err := result.LastInsertId()

if err != nil {

panic(err.Error())

}

fmt.Println(id)

- 更新操作`go// SQL 更新语句updateSQL := "UPDATE users SET name = ? WHERE id = ?"// 执行 SQL 更新语句result, err := db.Exec(updateSQL, "李四", 1)if err != nil {    panic(err.Error())}// 获取更新数据的行数count, err := result.RowsAffected()if err != nil {    panic(err.Error())}fmt.Println(count)

- 删除操作

go

// SQL 删除语句

deleteSQL := "DELETE FROM users WHERE id = ?"

// 执行 SQL 删除语句

result, err := db.Exec(deleteSQL, 1)

if err != nil {

panic(err.Error())

}

// 获取删除数据的行数

count, err := result.RowsAffected()

if err != nil {

panic(err.Error())

}

fmt.Println(count)

注意事项

在使用 Golang 进行 MySQL 数据库编程时,我们需要注意一些细节问题:

- 需要关闭数据库连接:在使用 sql.Open 建立数据库连接后,我们需要使用 defer db.Close()` 关闭数据库连接。

- 使用预编译语句:在进行数据库操作时,我们应该使用预编译语句进行操作,以避免 SQL 注入攻击和提高执行效率。

- 优化并发访问:在高并发场景下,我们应该适当增加数据库连接池的数量,并使用连接池进行优化。

结论

Golang 中的数据库编程非常简单,通过 database/sql 包提供的接口,我们可以方便地连接和操作 MySQL 数据库。在实际开发中,我们应该注意细节问题,并加强对高并发访问的优化。

相关文章

使用goland和Kubernetes构建容器化应用程序

单元测试、代码重构、远程调试,Goland让你轻松应对!

Golang程序员必备技能学会使用Gomod进行依赖管理

在Golang中实现基于RESTfulAPI的Web服务

深入剖析Golang的垃圾回收机制性能与内存管理的平衡点

开班信息 更多>>

课程名称
全部学科
咨询

HTML5大前端

Java分布式开发

Python数据分析

Linux运维+云计算

全栈软件测试

大数据+数据智能

智能物联网+嵌入式

网络安全

全链路UI/UE设计

Unity游戏开发

新媒体短视频直播电商

影视剪辑包装

游戏原画

    在线咨询 免费试学 教程领取