本文将说明借助 Go-SQL-/MySQL 驱动与数据库,怎样开发一个程序,以便完成建表、录入信息以及检索信息等基础功能。
点击下载 go- 示例工程
前提条件
配置好数据库系统,部署 Go 编程语言,同时加载配套的软件模块,务必保证系统环境参数设置无误。
操作步骤
说明
本篇所述的实践流程是在特定平台上完成的。倘若您所采用的是不同的工作环境或编译工具,那么具体的实施方法或许存在些许出入。
(可选)安装 Go 语言和驱动。
获取 数据库连接信息。
修改go-项目中的数据库连接信息。
运行go-项目。
步骤一:(可选)安装 Go 语言和驱动
如果您已安装 Go 语言和 MySQL 连接组件,可以忽略本节内容。如果您尚未安装,请参照后续指南完成安装过程。
安装 Go 语言
获取 Go 编程语言安装文件:需要前往官方网址,挑选与个人电脑系统相匹配的版本。
说明
这份文件选用的 Go 软件包名称是 go1.20.6.-amd64.msi。
安装 Go 语言:双击下载的安装包,按照提示进行安装。
设置环境变量:需把 Go 编译器的存放位置追加到系统路径变量里。
说明
默认安装路径是\usr\local\go\bin,如果安装 Go 语言时更改了路径,需要换成实际的路径。
确认安装:打开 Shell 命令行界面,键入下列指令,检查 Go 编程语言的版本详情,以此判断部署是否顺利完成:
C:\Users\admin\> go version
当前软件版本为go1.20.6,适用于windows操作系统,具体架构为amd64
安装 Go-SQL-/MySQL 驱动
依据 Go 语言各个版本差异,需采用不同方法进行安装,在安装 Go-SQL-/MySQL 驱动时,务必前往相应项目文件夹,并启动命令行界面。有关 Go-SQL-/MySQL 的更多内容,请查阅相关资料。
安装命令如下:
C:\Users\admin\Desktop\go-oceanbase>更新获取 github.com/go-sql-driver/mysql
开始获取 github.com/go-sql-driver/mysql 的版本 v1.7.1
go:新增了名为github.com/go-sql-driver/mysql的软件包,版本号为v1.7.1
当版本差异或网络状况导致go get指令安装失败时,可以借助go指令来实施go-sql-/mysql的安装过程。
在go的src目录下,复制go-sql-中的mysql仓库内容
cd /usr/local/go/src
使用git命令复制远程仓库到本地,地址为github上go-sql-driver组织下的mysql项目,路径是https://github.com/go-sql-driver/mysql.git。
重要
将 /usr/local/go/src 更改为 Go 真实安装路径进行操作。
通过go 进行安装。
go install mysql
重要
某些go版本默认的运行位置不一定是/src,需依据执行go时出现的错误来确定具体位置。比如,若报错提示在 /usr/local/go/src//mysql 查找:mysql,则应将mysql文件夹放置到/src/目录中,然后再运行安装指令。
确认 Go-SQL-/MySQL 驱动程序是否已正确安装,若安装过程遇到问题,需要依据错误提示进行相应调整。
查看github.com/go-sql-driver/mysql的模块依赖关系
步骤二:获取 数据库连接信息
联系 数据库部署人员或者管理员获取相应的数据库连接串。
连接到指定主机的数据库客户端,主机地址为{host},用户名为{username},密码为******,端口号为{port},数据库名称为{schema_name}。
数据库连接字符串中存储了用于访问数据库的必要信息,借助该字符串可以确认登录数据库,确保其中参数信息的准确性。
参数说明:
步骤三: 修改go-项目中的数据库连接信息
依照 步骤二:获取 数据库连接信息 部分提供的资料,更改test.go文件里的数据库连接设置。选中test.go文件,点击鼠标右键,在弹出的菜单里选择 打开方式。接着能够使用 记事本 或其他文本编辑工具来查看和修改文件内容。

示例如下:
示例代码如下:
连接字符串为用户名root,密码为密码,服务器地址为xxx.xxx.xxx.xxx,端口号为3306,数据库名称为test
步骤四:运行go-项目
编程任务实现之后,前往工程所在文件夹里的终端界面,借助go run指令来执行Go源代码,输入这个指令即可启动程序:
C:\Users\admin\Desktop\go-oceanbase>执行 test.go 文件
在 Linux 或 macOS 系统上执行go run时,必须事先设置临时的变量环境,这样才可以正常使用。
设置环境变量,将/usr/local/go/bin添加到系统路径中
go run test.go
运行后返回如下内容,说明数据库连接成功,示例语句正确执行:
说明
该内容是屏蔽了 “删除表 t1” 运行后的结果。
C:\Users\admin\Desktop\go-oceanbase>go run test.go
成功将OceanBase与go_mysql驱动对接起来
Hello OceanBase
项目代码介绍
点击go-下载项目代码。是一个名称为go-的压缩包。
解压后,得到一个名为go-的文件夹。目录结构如下所示:
|-- go.mod
|-- go.sum
|-- test.go
文件说明:
go.mod 代码介绍
该文件用来明确工程的产品代号、所使用的Go版本以及相关库的引用信息。
go.mod文件包含以下内容:
go.sum 代码介绍
该文件负责明确指定/go-sql-/mysql组件所需要的相关版本,目的是让整个工程能够选用恰当的依赖版本。
go.sum文件包含以下内容:
test.go 代码介绍
该文件说明了运用 Go 语言同 MySQL 数据库模式沟通的方法,涵盖了与数据库建立联系、建立表格、添加资料、检索资料以及移除表格等流程。此文件涉及的内容有:
设定main包,main表明这是一个可执行程序的包,该包中含有一个main()函数,此函数会在程序启动时被调用。
定义包。
语句导入了以下四个包:
代码如下:
import (
"database/sql"
"fmt"
"log"
"那个在github上的go语言mysql驱动"
请指定 go-sql-driver/mysql 的部署位置,该位置用于存放驱动程序文件。
)
声明Str类型的数据结构,里面设有字段Name,作为存放检索信息的容器;设立一个main()方法,此方法内部调用函数,负责执行建立表格、添加资料、检索资料以及移除表格等任务。
代码如下:
type Str struct {
Name string
}
func main() {
selectAll()
}
定义()函数。
这个函数涵盖了与数据库建立关联、生成表格、添加信息、检索资料以及移除表格等多个功能。
建立数据库链接,创建连接字符串conn,里面存储了 MySQL 的连接配置,涵盖账号、密钥、主机位置、通信端口和目标数据库名等细节,接着调用sql.Open()来启动连接,一旦发生异常就记录错误信息并终止运行,同时用defer语句安排在函数执行完毕后自动关闭连接资源
代码如下:
连接字符串为用户名:******,通过tcp协议连接到主机地址和端口号,数据库名称为schema_name
// 数据库连接参数
数据库连接尝试建立,使用类型为mysql的驱动程序,连接参数为conn,结果赋值给db和err变量
if err != nil {
log.Fatal(err)
}
显示器显示信息,借助defer关键字实现db.Close()函数的延时调用,保证函数结束后数据库连接被终止,同时借助fmt.()函数将连接成功的讯息展示在屏幕上。
代码如下:
defer db.Close()
if err != nil {
log.Fatal(err)
}
成功连接OceanBase,使用了go_mysql驱动程序
生成数据, 建立了一个名为t1的表格, 其中包含一个字符串类型的数据列str, 该列的最大长度设定为256个字符
代码如下:
_, 出错信息 = 数据库执行命令("建立名为t1的表,里面包含一个名为str的字符串类型字段,最大长度为256个字符")
if err != nil {
log.Fatal(err)
}
添加数据,向表t1中增加一条记录,将此条记录的str字段内容设定为Hello。
代码如下:
_, 错误 = 数据库执行("在表t1中记录值'Hello OceanBase'")
if err != nil {
log.Fatal(err)
}
检索信息。 在表t1中查找全部记录,把检索到的内容存入变量res。要是查找过程不顺利,就给出提示有误。
代码如下:
查询结果和错误信息分别赋值给res和err变量,通过执行对t1表的数据库命令实现
if err != nil {
log.Fatal(err)
}
defer res.Close()
for res.Next() {
var str Str
res.Scan(&str.Name)
fmt.Printf("%s\n", str.Name)
}
删除数据。 删除表t1。如果删除失败,则返回错误信息。
代码如下:
_, 错误 = 数据库执行删除表t1的操作
if err != nil {
log.Fatal(err)
}
完整的代码展示
go.mod
module go-oceanbase
go 1.20
需要引入github.com/go-sql-driver/mysql的v1.7.1版本,该版本为间接依赖
go.sum
github.com/go-sql-driver/mysql 版本为1.7.1, 使用哈希值lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI, 该哈希值对应资源文件
github.com/go-sql-driver/mysql版本为v1.7.1的模块配置文件中,哈希值为OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
test.go
package main
import (
"database/sql"
"fmt"
"log"
"这个软件包提供了与 MySQL 数据库的连接功能,它支持多种数据库操作,包括查询和更新,是 Go 语言中常用的数据库驱动之一,能够方便地集成到各种项目中,为开发者提供了便利的数据库访问方式。"
请指定 go-sql-driver/mysql 的安装位置。
)
type Str struct {
Name string
}
func main() {
selectAll()
}
func selectAll() {
连接字符串为用户名:******,通过tcp协议连接到主机:端口,访问模式名为schema_name的数据库
// 数据库连接参数
数据库连接尝试建立,使用mysql驱动,连接信息为conn,结果赋值给db和err变量
if err != nil {
log.Fatal(err)
}
defer db.Close()
if err != nil {
log.Fatal(err)
}
成功连接OceanBase,使用go_mysql驱动程序
// 创建表 t1
_, err = db.Query("create table t1(str varchar(256))")
if err != nil {
log.Fatal(err)
}
// 插入数据
_, 错误 = 数据库执行语句("将'Hello OceanBase'添加到表t1中")
if err != nil {
log.Fatal(err)
}
// 查询数据
查询结果赋值给res, 错误信息赋值给err
if err != nil {
log.Fatal(err)
}
defer res.Close()
for res.Next() {
var str Str
res.Scan(&str.Name)
fmt.Printf("%s\n", str.Name)
}
// 删除表 t1
_, 错误 = 数据库执行删除表t1的操作
if err != nil {
log.Fatal(err)
}
}
相关文档
关于 Go-SQL-/MySQL 的资讯,在数据库开源社区同样能找到不少资料,具体内容可以查阅相关文献。
扫一扫在手机端查看
- 上一篇:阿里云服务器2核4G活动报价_阿里云服务器2核4G、4核8G、8核16G配置主要适用场景及最新活动价格参考
- 下一篇:阿里云云解析DNS系统支持非阿里云注册域名_阿里云国际站DNS免费版调整,非阿里云注册域名需绑定付费版实例
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1