通过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
Centos环境下Postgresql 安装配置及环境变量配置技巧
May 18 PostgreSQL
如何使用PostgreSQL进行中文全文检索
May 27 PostgreSQL
通过Qt连接OpenGauss数据库的详细教程
Jun 23 PostgreSQL
postgresql 删除重复数据案例详解
Aug 02 PostgreSQL
PostgreSQL13基于流复制搭建后备服务器的方法
Jan 18 PostgreSQL
使用PostGIS完成两点间的河流轨迹及流经长度的计算(推荐)
Jan 18 PostgreSQL
Oracle配置dblink访问PostgreSQL的操作方法
Mar 21 PostgreSQL
PostgreSQL并行计算算法及参数强制并行度设置方法
Apr 07 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安全技术之 实现php基本安全
2010/09/04 PHP
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
ExtJs的Date格式字符代码
2010/12/30 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
js友好的时间返回函数
2016/08/24 Javascript
javascript另类方法实现htmlencode()与htmldecode()函数实例分析
2016/11/17 Javascript
ztree简介_动力节点Java学院整理
2017/07/19 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
python中sleep函数用法实例分析
2015/04/29 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
python中time、datetime模块的使用
2020/12/14 Python
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
信息系统专业个人求职信范文
2013/12/07 职场文书
采购主管的岗位职责
2013/12/17 职场文书
报社实习生自荐信
2014/01/24 职场文书
个人租房协议书
2014/04/09 职场文书
实习公司领导推荐函
2014/05/21 职场文书
小学生国庆节演讲稿
2014/09/05 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
村当支部个人对照检查材料思想汇报
2014/10/06 职场文书
2014年村官工作总结
2014/11/24 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS