我们已经准备好了,你呢?

2026我们与您携手共赢,为您的企业形象保驾护航!

本文将说明借助 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文件,点击鼠标右键,在弹出的菜单里选择 打开方式。接着能够使用 记事本 或其他文本编辑工具来查看和修改文件内容。

image.png

示例如下:

示例代码如下:

连接字符串为用户名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 的资讯,在数据库开源社区同样能找到不少资料,具体内容可以查阅相关文献。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/12090.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线