QT和达梦数据库的安装与连接
QT和达梦数据库的安装
安装QT
在线安装
- 由于Qt自5.15版本之后,就不再支持离线安装包了,所以想要继续安装,需要从官方QT在线安装这里注册登录QT账号下载在线安装工具
离线安装
- 或者在QT离线安装,下载离线文件自行编译使用
为了简便建议选择在线安装,可以从清华镜像源处直接下载安装。
- 运行安装程序时可以使用命令行,在后面添加国内镜像地址安装会快很多
./xxxx.run --mirror https://mirrors.tuna.tsinghua.edu.cn/qt
- 需要注意的是:在线安装-自定义安装,如果找不到Qt5.15.2,可以先选中Archive,然后点击Filter即可
安装达梦数据库
- 这一部分按照达梦的官方教程就可以单机安装部署,按照对应系统的步骤去进行即可。
步骤中要求必须要新建非root账户,亲测不新建也可,可以根据自己需求进行选择。
- 是否启用大小写敏感要与业务进行沟通!否则需要重新实例化!
- 实际在使用过程中出现了数据库服务已开机自启动但无法连接数据库的问题,需要在bin目录下root权限执行./DmServiceDMSERVER restart重启数据库服务(具体原因未知)
- 如果遇到实例化过程中出现创建数据库成功但启动失败,请检查日志文件,常见问题:权限问题(可以通过提权解决)or内存不足。
通过ODBC进行连接
Windows
- 由于windows系统自带ODBC,直接进行配置连接即可,此处略过,参考Windows Qt连接达梦数据库
Linux
数据库连接unixODBC
由于Linux系统未自带unixODBC,需要自行下载编译or直接apt-get安装,这里选择apt-get安装的方法
- 执行命令:sudo apt-get install unixodbc unixodbc-dev 安装unixODBC
- 执行命令:odbcinst -j 查看odbc对应的配置文件所在的位置
返回结果示例:
unixODBC 2.3.6 DRIVERS............: /etc/odbcinst.ini SYSTEM DATA SOURCES: /etc/odbc.ini FILE DATA SOURCES..: /etc/ODBCDataSources USER DATA SOURCES..: /home/Kylin/.odbc.ini SQLULEN Size.......: 8 SQLLEN Size........: 8 SQLSETPOSIROW Size.: 8
- 在对应位置修改odbcinst.ini文档和odbc.ini文档(如果对应位置没有这两个文档,请手动创建)
文件名:odbcinst.ini
文件内容如下:[DmODBC] Description = DM Database ODBC Driver Driver = /home/Kylin/dmdbms/bin/libdodbc.so
- DmODBC为驱动名称,可自行修改
- Driver字段对应达梦安装目录bin目录下的libdodbc.so文件
文件名:odbc.ini
文件内容如下:[DMDB] Description=[DAMENG ODBC Driver] Driver= DmODBC Server=[127.0.0.1] Port=[5236] Database=[DAMENG] User=[SYSDBA] Password=[123456]
- DMDB,同样为自己修改字段,之后连接ODBC需要用到
- Description字段为自己对于驱动的描述,可随意填写
- Driver字段对应刚刚odbcinst.ini文件头部的驱动名称内容
- Server字段为数据库服务器所在ip
- Port为数据库服务对应端口,达梦一般为5236
- Database对应数据库名,取决于实例化时的数据库名称
- User为登录数据库所用的用户名,达梦的管理员用户名为SYSDBA
- Password为对应用户名登陆所需的密码
达梦数据库的逻辑结构和 Oracle 很相似,但和 MySQL、SQLServer 有非常大的区别,需要额外注意。
达梦数据库没有库的概念,从上往下,依次为:实例-用户-表,如下图所示:
- 使用连接命令进行测试:sudo isql -v DMDB [用户名]SYSDBA [密码]123456
- 如果出现报错,多数情况是因为用户库目录下缺少共享库(.so)文件
这里选择简单粗暴的解决方案:将达梦bin文件夹./dmdbms/bin下的共享库(.so)文件全部复制至用户库目录./usr/lib之中(有耐心的话建议通过ldd ./dmdms/bin/libdodcb.so命令查看缺少什么库文件,然后粘过来对应的库文件)- 通常此时再次使用上述连接命令测试可以得到正确的连接成功返回结果
QT连接ODBC
- 在qt中新建项目并在.pro文件中添加QT+=sql
main.cpp代码如下:
#include "mainwindow.h"
#include<QSqlDatabase>
#include <QApplication>
#include<QDebug>
#include<QSqlError>
int main(int argc, char *argv[])
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost"); //此处为数据库服务器所在ip
db.setPort(5236); //数据库服务端口
db.setDatabaseName("DMDB"); //这里数据库名要设置成上面配置文件odbc.ini中的对应名称
db.setUserName("SYSDBA"); //登录用户名
db.setPassword("heu123456"); //用户名对应密码
if (db.open())
{
qDebug() << "connect ok!";
}
else
{
qDebug() << "connect fail! " << db.lastError().text();
}
}
- 直接运行程序进行测试,控制台输出connect ok!则成功
- 如果出现报错:[Driver Manager] Data source name not found and no default driver specified QODBC3: Unable to connect,说明setDatabaseName数据库名设置的不对,这里的数据库名不是你要连接的数据库名,而是DSN名。DSN名就是上面配置文件odbc.ini中第一行的内容,检查odbc.ini和odbcinst.ini中的配置。
- 如果连接失败请尝试参考LinuxQT连接达梦数据库对QODBC进行编译。
参考资料
Qt基础 | QT5.15.2与VS2019安装及配置
达梦数据库-单机安装部署
Windows Qt连接达梦数据库
达梦数据库介绍
LinuxQT连接达梦数据库