本章节主要介绍使用 GO 语言开发时,如何使用 ODBC (Open Database Connectivity) 快速连接 DM 数据库。
环境介绍
软件 | 版本 |
---|---|
DM 数据库 | DM 8.0 及以上版本 |
GO | Go 1.15.3 windows-amd 64 |
GCC | Tdm 64-gcc-9.2.0 |
GIT | Git-2.29.2-64-bit |
开发步骤
下载并安装 Git
请下载并安装 Git,通过 Git 获取驱动程序。
Git 安装步骤简单,持续点击【下一步】即可。安装完成后,在桌面单击鼠标右键,选择【Git Bash Here】按钮,出现下图即表明安装成功。
获取 ODBC 驱动
- 依赖包下载
右击鼠标选择【Git Bash Here】在命令行执行以下命令下载相关工程包,如下所示:
cd D:\\Go\\Go_WorkList ##工作目录
git clone https://github.com/golang/sys.git
git clone https://github.com/go-xorm/xorm
git clone https://github.com/alexbrainman/odbc
git clone https://gitea.com/mps-go/xorm-builder.git
- 依赖包分发配置
分发工程包,ctrl+R 输入 CMD 进入命令行执行以下操作。
#创建分发目录(存在可忽略)
md D:\Go\src\xorm.io
md D:\Go\src\github.com\alexbrainman
md D:\Go\src\github.com\go-xorm
md D:\Go\src\golang.org\x
#分发工程包
move D:\Go\Go_WorkList\xorm D:\Go\src\github.com\go-xorm
move D:\Go\Go_WorkList\odbc D:\Go\src\github.com\alexbrainman
move D:\Go\Go_WorkList\xorm-builder D:\Go\src\xorm.io\builder
move D:\Go\Go_WorkList\sys D:\Go\src\golang.org\x
Windows 配置 ODBC 数据源
Window 下自带 ODBC 数据源管理器(数据库安装程序会自动注册 DM ODBC 驱动)。
- Windows 搜索框输入【ODBC】点击【64 位相关程序】,选择【添加】。
- 选中 DM8 数据源驱动程序,点击【完成】。
- 在红框内输入以下信息,数据库默认密码为
SYSDBA
,点击【测试】。
- 点击【测试数据源】,显示测试成功字样即数据库连接成功,点击三次【确定】后完成数据源配置。
Linux 配置 ODBC 数据源
- 安装
Linux 环境获取 ODBC 需要下载安装数据源管理工具,版本不限,具体请参考 unixODBC 官网 。
$ tar zxvf unixODBC-2.3.0.tar.gz -- 解压 tar 包到当前目录
$ cd unixODBC-2.3.0/ -- 切换到解压后的目录
$ ./configure && make && make install -- 编译安装
- 配置
编辑 /usr/local/etc/odbcinst.ini 文档添加以下信息:
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = {DM_HOME}/bin/libdodbc.so
编辑 /usr/local/etc/odbc.ini 文档添加以下信息:
[dm]
Description = DM ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
- 验证
驱动安装完毕后需要切换到 dmdba 用户下执行验证命令,详情如下:
$ su – dmdba --需切换到 dmdba 用户下执行以下命令
$ isql -v dm --输入命令以后打印“Connected!”字样代表连接成功
连接 ODBC 数据库
示例代码
package main
//引用包
import (
"fmt"
"github.com/alexbrainman/odbc" // go官方驱动
"github.com/go-xorm/xorm"
)
//定义引擎
var (
engine *xorm.Engine
)
func main() {
//数据库连接参数
params :=fmt.Sprintf("driver={DM8 ODBC DRIVER};server=192.168.112.128:5236;database=DAMENG;uid=SYSDBA;pwd=SYSDBA;charset=utf8")
/*driver 对应 DM8-ODBC 数据源名称;
erver =数据库 IP
database = 数据库名称
uid = 数据库用户
pwd = 数据库用户密码
charset = 字符集
*/
//创建 Engine 实例连接数据库
Engine, err := xorm.NewEngine("odbc", params)
if err != nil {
fmt.Println("new engine got error:", err)
return
}
//通过 Engine.Ping() 验证数据库是否连接成功
if err := Engine.Ping(); err != nil {
fmt.Println("ping got error:", err)
return
}
Engine.ShowSQL(true)
return
}