好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

通过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" />。

?

1

2

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]后回车保存。

?

1

2

3

4

5

6

# 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将策略生效。

?

1

2

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用户授权,并退出数据库

?

1

2

3

4

5

6

gsql -d postgres -p 26000 -r

 

postgres=# alter role dbuser sysadmin;

alter role

 

postgres=# \q

2.3 修改数据库监听地址

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

?

1

2

cd /gaussdb/data/db1

vi postgresql.conf

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

?

1

2

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

listen_addresses = '*'

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

?

1

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 文件,代码如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

#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 的mingw选的不是64位的 odbc没有按照要求配置

以上就是通过qt连接opengauss数据库的详细教程的详细内容,更多关于qt连接opengauss数据库的资料请关注服务器之家其它相关文章!

原文链接:https://blog.csdn.net/weixin_43894075/article/details/117928718

查看更多关于通过Qt连接OpenGauss数据库的详细教程的详细内容...

  阅读:16次