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


Posted in PostgreSQL onJune 23, 2021

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文件后进行解压缩,解压缩后文件如下。
通过Qt连接OpenGauss数据库的详细教程

由于本实验openGauss安装在ECS(openEuler ARM)上,所以进入Euler2.8_arm_64文件夹,显示如下:
通过Qt连接OpenGauss数据库的详细教程

解压缩GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,显示如下:

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

点击psqlodbc_x86.msi进行安装:

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

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

3.2 打开驱动管理器

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

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

3.3 配置数据源

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

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

Data Source:openGauss (数据源名称,可以自定义)。
Database:postgres (需要连接的Datebase名称)。
Server:openGauss数据库服务器的公网IP,请根据实际情况填写。
Pot:26000 (端口号)。
User Name:dbuser (连接数据库的用户名,不能使用omm用户,需要在数据库中创建)
Password:dbuser用户的密码,请根据实际情况填写。

3.4 验证并保存设置

点击Test,显示 Connection successful 表示设置成功:

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

点击保存:

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

配置成功!

3 Qt安装

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

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

4 创建一个Qt工程

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

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

为了使用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();
}

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

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

总结

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

  1. Qt 的MinGW选的不是64位的
  2. ODBC没有按照要求配置

以上就是通过Qt连接OpenGauss数据库的详细教程的详细内容,更多关于Qt连接OpenGauss数据库的资料请关注三水点靠木其它相关文章!

PostgreSQL 相关文章推荐
PostgreSQL将数据加载到buffer cache中操作方法
Apr 16 PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
Rust 连接 PostgreSQL 数据库的详细过程
Jan 22 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 07 PostgreSQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
Apr 12 PostgreSQL
PostgreSQL怎么创建分区表详解
Jun 25 PostgreSQL
PostgreSQL之连接失败的问题及解决
May 08 PostgreSQL
postgresql中如何执行sql文件
May 08 PostgreSQL
postgres之jsonb属性的使用操作
Jun 23 #PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 #PostgreSQL
如何使用PostgreSQL进行中文全文检索
May 27 #PostgreSQL
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
Centos环境下Postgresql 安装配置及环境变量配置技巧
自定义函数实现单词排序并运用于PostgreSQL(实现代码)
PostgreSQL将数据加载到buffer cache中操作方法
Apr 16 #PostgreSQL
You might like
php中3des加密代码(完全与.net中的兼容)
2012/08/02 PHP
PHP获取当前日期所在星期(月份)的开始日期与结束日期(实现代码)
2013/06/18 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
javaScript生成支持中文带logo的二维码(jquery.qrcode.js)
2017/01/03 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
python中hashlib模块用法示例
2017/10/30 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
2019/01/30 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
2020/12/07 Python
python requests库的使用
2021/01/06 Python
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
中年人生感言
2014/02/04 职场文书
小学老师寄语大全
2014/04/04 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
公司领导班子对照材料
2014/08/18 职场文书
委托证明范本
2014/11/25 职场文书
nginx配置虚拟主机的详细步骤
2021/07/21 Servers
mysql事务对效率的影响分析总结
2021/10/24 MySQL
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python