本文主要介绍在Go语言环境中如何对达梦数据库进行操作,官方相关材料地址如下:
达梦数据库安装完成后,在其安装目录的drivers
目录下可以找到对应语言的驱动文件。
在
go
目录下的dm-go-driver.zip
即为我们需要使用的驱动包。
提示
如果使用GORM
进行数据库操作则可以使用达梦一起提供的gorm_v1_dialect.zip
和gorm_v2_dialect.zip
,本文主要使用标准方式进行达梦数据库的连接操作,不对GORM
进行展开
除上述获取方式外,笔者在达梦论坛中找到了一份分享链接,在其中也可以获取达梦数据库相关资源(Windows)
链接地址:https://eco.dameng.com/s/4IZA73B22P
提取码:erem
注意
本人不对上述链接的有效性以及内容安全性等进行保证,请谨慎选择下载
驱动文件下载完成后,可以参考官网方式进行操作,在实际体验中,本着感觉官网方式较为繁琐,我么可以直接将下载的驱动作为项目依赖进行引入。
解压驱动包至项目目录中,名称可以定义,笔者将其放在dm-go-driver
中,目录结构如下
修改go.mod
文件,添加达梦驱动包的依赖
module jianggujin.com//dm go 1.23.0 require ( dm v0.0.0 ) replace dm => ./dm-go-driver/dm
提示
需要特别注意上述配置中的配置信息
replace dm => ./dm-go-driver/dm
:表示将dm
依赖指向为本地目录./dm-go-driver/dm
,这样包管理工具会直接使用本地文件,不会从网络上下载dm v0.0.0
:引入驱动包,版本号自定义指定上述配置完成后,需要执行go mod tidy
下载驱动包依赖的golang.org/x/text
和github.com/golang/snappy
。最终配置参考如下:
module jianggujin.com//dm go 1.23.0 require ( dm v0.0.0 ) replace dm => ./dm-go-driver/dm require ( github.com/golang/snappy v0.0.1 // indirect golang.org/x/text v0.3.2 // indirect )
准备工作完成后,可以按照Go语言中标准的数据库操作方式进行验证,示例代码如下:
goimport (
"database/sql"
_ "dm"
"testing"
)
func TestConnDm(t *testing.T) {
db, err := sql.Open("dm", "连接串")
if err != nil {
t.Fatal(err)
}
defer db.Close()
// 检测连通性
err = db.Ping()
if err != nil {
t.Fatal(err)
}
// 查询数据库版本信息
rows, err := db.Query("select * from v$version")
if err != nil {
t.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var version string
rows.Scan(&version)
t.Log(version)
}
if rows.Err() != nil {
t.Fatal(rows.Err())
}
}
连接字符串可参考官网说明,常用格式如下:
dm://user:password@host:port[?propName1=propValue1][&propName2=propValue2]… dm://user:password@GroupName[?propName1=propValue1][&propName2=propValue2]… dm://user:password@GroupName?GroupName=(host1:port1,host2:port2,…)[&propName1=propValue1]… dm://user:password@host:port?dialName=anyName[&propName1=propValue1]…
本文作者:蒋固金
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!