纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

一 学   2021-06-23 我要评论
想了解通过Qt连接OpenGauss数据库的详细教程的相关内容吗一 学在本文为您仔细讲解Qt连接OpenGauss数据库的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Qt连接OpenGauss数据库,Qt,OpenGauss数据库下面大家一起来学习吧

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没有按照要求配置

相关文章

猜您喜欢

  • Unity3D快速入门 Unity3D快速入门教程

    想了解Unity3D快速入门教程的相关内容吗kybshj在本文为您仔细讲解Unity3D快速入门的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Unity3D入门,Unity3D快速入门,Unity3D入门教程下面大家一起来学习吧..
  • Java面向对象 带你轻松解决Java面向对象的编程--数组,集合框架

    想了解带你轻松解决Java面向对象的编程--数组,集合框架的相关内容吗给我new一个亿在本文为您仔细讲解Java面向对象的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Java面向对象,Java编程,数组编程,集合框架下面大家一起来学习吧..

网友评论

Copyright 2020 www.gamerfx.net 【游戏天空】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式