通过Qt连接OpenGauss数据库的详细教程

目录
  • 1 安装软件
  •  2 准备连接环境
    • 2.1 修改数据库的pg_hba.conf文件
    • 2.2 使用omm用户登陆数据库,给dbuser用户授权,并退出数据库
    • 2.3 修改数据库监听地址
  • 3 windows下配置odbc数据源
    • 3.1下载客户端gaussdb(for opengauss)驱动程序并进行安装
    • 3.2 打开驱动管理器
    • 3.3 配置数据源
    • 3.4 验证并保存设置
  • 3 qt安装
    • 4 创建一个qt工程
      • 总结

        1 安装软件

        • qt-opensource-windows-x86-5.14.2.exe(之前的版本可能不行,安装过程中必须包含mingw64)
        • opengauss
        • odbc

         2 准备连接环境

        在opengauss所在的root环境下执行下列步骤

        2.1 修改数据库的pg_hba.conf文件

        在gs_home中查找pg_hba.conf文件,本实验中数据库gs_home设置的为/gaussdb/data/db1,实际操作中gs_home地址可以查看安装时的配置文件:< param name=“datanode1” value=”/gaussdb/data/db1″ />。

        cd /gaussdb/data/db1
        vi pg_hba.conf

        输入“:90”找到对应位置,然后输入“i”切换到insert模式,将“host all all 192.168.0.132/32 trust”修改为“host all all 192.168.0.132/32 sha256”。

        将以下内容添加进pg_hba.conf文件,完成后按下“esc”键,退出insert模式,输入“:wq”后回车保存。

        # ipv4 local connections:
        host    all             all             127.0.0.1/32            trust
        host    all    all    192.168.0.19/32    sha256
        host all all 0.0.0.0/0 sha256
        # ipv6 local connections:
        host    all             all             ::1/128                 trust

        使用omm用户登陆,使用gs_ctl将策略生效。

        su - omm
        gs_ctl reload -d /gaussdb/data/db1/

        返回结果为:

        [2020-07-23 15:39:55.398][71828][][gs_ctl]: gs_ctl reload ,datadir is -d “/gaussdb/data/db1”
        server signaled

        注:如果之前没有启动过数据库,返回结果如下,继续操作即可:

        [2021-04-27 17:02:59.640][15354][][gs_ctl]: gs_ctl reload ,datadir is /gaussdb/data/db1
        [2021-04-27 17:02:59.640][15354][][gs_ctl]:  pid file “/gaussdb/data/db1/postmaster.pid” does not exist
        [2021-04-27 17:02:59.640][15354][][gs_ctl]: is server running?

        2.2 使用omm用户登陆数据库,给dbuser用户授权,并退出数据库

        gsql -d postgres -p 26000 -r
        
        postgres=# alter role dbuser sysadmin;
        alter role
        
        postgres=# \q

        2.3 修改数据库监听地址

        在gs_home中,本实验中数据库gs_home设置的为/gaussdb/data/db1。

        cd /gaussdb/data/db1
        vi postgresql.conf

        输入“:60”找到对应位置,然后输入“i”切换到insert模式,将listen_addresses的值修改成为*,修改后按下“esc”键,退出insert模式,输入“:wq”后回车保存。

        #listen_addresses = '192.168.0.19'              # what ip address(es) to listen on;
        listen_addresses = '*'

        修改完成后重启数据库生效(-d后面的数据库默认路径,需要根据实际情况进行修改)。

        gs_ctl restart -d /gaussdb/data/db1/

        3 windows下配置odbc数据源

        windows操作系统自带odbc数据源管理器,无需用户手动安装管理器便可直接进行配置。

        3.1下载客户端gaussdb(for opengauss)驱动程序并进行安装

        下载地址:gaussdb驱动程序
        在本地(例如d:/download)下载zip文件后进行解压缩,解压缩后文件如下。

        由于本实验opengauss安装在ecs(openeuler arm)上,所以进入euler2.8_arm_64文件夹,显示如下:

        解压缩gaussdb-kernel-v500r001c10-windows-odbc.tar.gz文件,显示如下:

        点击psqlodbc_x86.msi进行安装:

        默认设置,直到安装完毕。

        3.2 打开驱动管理器

        在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为c盘,如果是其他盘符,请对路径做相应修改):
        64位操作系统上进行64位程序开发,安装64位驱动程序后,使用64位的驱动管理器:c:\windows\system32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > odbc 数据源(64 位)。

        3.3 配置数据源

        在打开的驱动管理器上,选择“用户dsn > 添加 > postgresql unicode(x64)”,然后进行配置:

        data source:opengauss (数据源名称,可以自定义)。
        database:postgres (需要连接的datebase名称)。
        server:opengauss数据库服务器的公网ip,请根据实际情况填写。
        pot:26000 (端口号)。
        user name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)
        password:dbuser用户的密码,请根据实际情况填写。

        3.4 验证并保存设置

        点击test,显示 connection successful 表示设置成功:

        点击保存:

        配置成功!

        3 qt安装

        下载好 qt-opensource-windows-x86-5.14.2.exe后,无脑next就行。但有一点需要注意。打勾的必须选上!打勾的必须选上!打勾的必须选上!

        4 创建一个qt工程

        不会创建的童鞋可以参考qt创建工程教程。
        注意!kit必须选64bit的

        为了使用sql,还必须在xxx.pro下面添加:

        qt += sql

        接下来就可以愉快的测试了!
        修改main.cpp文件,代码如下:

        #include "gsql.h"
        #include <qsqldatabase>
        #include <qstringlist>
        #include <qdebug>
        #include <qmessagebox>
        #include <qtsql>
        #include <qsqlquery>
        #include <qapplication>
        #include <iostream>
        using namespace std;
        
        int main(int argc, char *argv[])
        {
            qapplication a(argc, argv);
            gsql w;
            w.show();
            qsqldatabase db = qsqldatabase::adddatabase("qodbc");
        	qstring dsn = qstring::fromlocal8bit("xxxx");//你在2.3中配置的data source,例如opengauss
        	qdebug()<<"odbc connect?"<<db.isvalid();
            db.sethostname("xxxx.xxxx.xxxx.xxxx");//你的ip地址
            db.setdatabasename(dsn);
            db.setusername("xxx"); //用户名
            db.setpassword("xxxx");//密码
            db.setport(26000); //opengauss端口号为26000
            if(!db.open())
            {
                qdebug()<<db.lasterror().text();
                qmessagebox::critical(0, qobject::tr("database error"), db.lasterror().text());
                return;
            }
            else
                qdebug()<<"database open success!";
            return a.exec();
        }

        显示结果如下,就说明连接成功。否则,会弹出报错提示。

        总结

        如果不成功,可能的原因:

        1. qt 的mingw选的不是64位的
        2. odbc没有按照要求配置

        以上就是通过qt连接opengauss数据库的详细教程的详细内容,更多关于qt连接opengauss数据库的资料请关注www.887551.com其它相关文章!

        (0)
        上一篇 2022年3月21日
        下一篇 2022年3月21日

        相关推荐