通过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(实现代码)
Apr 22 PostgreSQL
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
May 21 PostgreSQL
postgresql无序uuid性能测试及对数据库的影响
Jun 11 PostgreSQL
浅谈PostgreSQL表分区的三种方式
Jun 29 PostgreSQL
PostgreSQL解析URL的方法
Aug 02 PostgreSQL
关于PostgreSQL JSONB的匹配和交集问题
Sep 14 PostgreSQL
PostgreSQL事务回卷实战案例详析
Mar 25 PostgreSQL
PostgreSQL聚合函数介绍以及分组和排序
Apr 12 PostgreSQL
PostgreSQL数据库去除重复数据和运算符的基本查询操作
Apr 12 PostgreSQL
PostgreSQL之连接失败的问题及解决
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
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript制作windows经典扫雷小游戏
2015/03/31 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
JavaScript实现的简单拖拽效果
2015/06/01 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
python基于xmlrpc实现二进制文件传输的方法
2015/06/02 Python
python处理csv中的空值方法
2018/06/22 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
机械工程及其自动化专业求职信
2014/08/08 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
单位工作证明格式模板
2014/10/04 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL