Win10 64位系统Qt5.9.7连接神通数据库7.0
因为国产化的原因,项目后期数据库要使用神通数据库,将自己安装测试过程记录如下,以便后期自查:
当前系统环境:
Qt版本: 5.9.7
神通数据库7.0_win64安装:
- 点击setup.exe,一路下一步,直至结束。参考安装包自带的《神通数据库-数据库快速入门.pdf》中7.1
- 安装完成后,电脑重启,打开系统服务,查看数据库服务是否“正在运行”。查看服务如下:
若没有运行,右键->“属性”->”启动”,等待启动成功即可。
测试数据库是否安装成功
在系统左下角“程序”中找到“神通数据库”,选择“SQL交互工具”,打开SQL交互工具软件后,“文件”->“连接”,
主机地址:localhost
数据库名:在你安装数据库后,会自动让创建一个数据库,就使用那个数据库名称就行
用户名称:SYSDBA
密码:初始默认密码:szoscar55
点击“连接”,如果成功,则进入数据库列表中。
若想修改登录密码:
执行后,会给出提示。关掉sql交互工具,重新连接会发现密码已经修改,需要使用新密码登录。
至此,数据库安装成功。
Qt连接数据库:
-
系统中配置数据库驱动源
有网友说在C:\Windows\System32\odbcad32.exe中“添加” -> 选择OSCAR ODBC DRIVER,可是当时我的电脑打开没有这个选项,
(图中的是按照下面的方法添加后才出现的)
最后我在“控制面板”->“管理工具”->”ODBC数据源”中进行的添加数据源操作
至此,数据源添加成功。
QT测试:
打开QtCreator,新建QMainWindow类工程
界面设计:
为了代码少写,所以在界面将各个控件的初始值已经赋上了。
主要代码:
.h:
#include <QDialog>
#include <QSqlQuery>
#include <QSqlRecord>
#include <QDebug>
#include <QSqlDatabase>
#include <QSqlDriver>
#include <QSqlError>
.cpp:
//点击按钮“连接”触发槽函数:
void Dialog::connectBtnSlot()
{
QString hostStr = ui->hostNameLineEdit->text();
QString dbNameStr = ui->databaseNameLineEdit->text();
QString userStr = ui->userNameLineEdit->text();
QString passwordStr = ui->passwordLineEdit->text();
QSqlDatabase sd;
sd = QSqlDatabase::addDatabase("QODBC");
const QString strName(QString("DRIVER={OSCAR ODBC DRIVER};SERVER=%1;UID=%2;PWD=%3;DATABASE=%4;Port=%5")
.arg(hostStr) //服务地址
.arg(userStr) //用户名称
.arg(passwordStr) //用户密码
.arg(dbNameStr) //数据库实例
.arg(2003)); //端口号
sd.setDatabaseName(strName);
db.setHostName(hostStr);
db.setDatabaseName(dbNameStr);
db.setUserName(userStr);
db.setPassword(passwordStr);
if(sd.open())
{
ui->infoTextEdit->append("Connect success.");
ui->infoTextEdit->append(tr("current hostname: %1").arg(hostStr));
ui->infoTextEdit->append(tr("current database: %1").arg(dbNameStr));
ui->infoTextEdit->append(tr("current username: %1").arg(userStr));
ui->infoTextEdit->append(tr("current password: %1").arg(passwordStr));
}
else
{
//ui->infoTextEdit->append("Connect failed.");
QString errorInfo = sd.lastError().text();
ui->infoTextEdit->append(errorInfo);
}
query = QSqlQuery(sd);
}
注:如果点击“连接”后还是无法连接,查看是否是因为缺库的原因。我一般是在运行前,先用Qt自带的命令将所依赖的库拷贝过去,如下图:
点击打开命令框,输入windeployqt exe所在路径(尽量避免中文路径),回车,这样就把Qt相关库拷过来了。
再次测试,一般就没有什么问题了。
此文章只是因本人记性较差,用来记录,难免有错误的地方,望大家多多包涵,批评指正。