Win10 64位系统Qt5.9.7连接神通数据库7.0

  • Post author:
  • Post category:其他




Win10 64位系统Qt5.9.7连接神通数据库7.0

因为国产化的原因,项目后期数据库要使用神通数据库,将自己安装测试过程记录如下,以便后期自查:


当前系统环境:


Qt版本: 5.9.7


神通数据库7.0_win64安装:

  1. 点击setup.exe,一路下一步,直至结束。参考安装包自带的《神通数据库-数据库快速入门.pdf》中7.1
  2. 安装完成后,电脑重启,打开系统服务,查看数据库服务是否“正在运行”。查看服务如下:

若没有运行,右键->“属性”->”启动”,等待启动成功即可。


测试数据库是否安装成功

在系统左下角“程序”中找到“神通数据库”,选择“SQL交互工具”,打开SQL交互工具软件后,“文件”->“连接”,

主机地址:localhost

数据库名:在你安装数据库后,会自动让创建一个数据库,就使用那个数据库名称就行

用户名称:SYSDBA

密码:初始默认密码:szoscar55

点击“连接”,如果成功,则进入数据库列表中。


若想修改登录密码:

执行后,会给出提示。关掉sql交互工具,重新连接会发现密码已经修改,需要使用新密码登录。

至此,数据库安装成功。

Qt连接数据库:


  1. 系统中配置数据库驱动源

有网友说在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相关库拷过来了。

再次测试,一般就没有什么问题了。

此文章只是因本人记性较差,用来记录,难免有错误的地方,望大家多多包涵,批评指正。



版权声明:本文为wy313122343原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。