通過Qt連接OpenGauss數(shù)據(jù)庫的詳細(xì)教程
1 安裝軟件
- qt-opensource-windows-x86-5.14.2.exe(之前的版本可能不行,安裝過程中必須包含MinGW64)
- OpenGauss
- ODBC
2 準(zhǔn)備連接環(huán)境
在openGauss所在的root環(huán)境下執(zhí)行下列步驟
2.1 修改數(shù)據(jù)庫的pg_hba.conf文件
在GS_HOME中查找pg_hba.conf文件,本實驗中數(shù)據(jù)庫GS_HOME設(shè)置的為/gaussdb/data/db1,實際操作中GS_HOME地址可以查看安裝時的配置文件:< PARAM name=“dataNode1” value="/gaussdb/data/db1" />。
cd /gaussdb/data/db1 vi pg_hba.conf
輸入“:90”找到對應(yīng)位置,然后輸入“i”切換到INSERT模式,將“host all all 192.168.0.132/32 trust”修改為“host all all 192.168.0.132/32 sha256”。
將以下內(nèi)容添加進(jìn)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/
返回結(jié)果為:
[2020-07-23 15:39:55.398][71828][][gs_ctl]: gs_ctl reload ,datadir is -D "/gaussdb/data/db1"
server signaled
注:如果之前沒有啟動過數(shù)據(jù)庫,返回結(jié)果如下,繼續(xù)操作即可:
[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用戶登陸數(shù)據(jù)庫,給dbuser用戶授權(quán),并退出數(shù)據(jù)庫
gsql -d postgres -p 26000 -r postgres=# alter role dbuser sysadmin; ALTER ROLE postgres=# \q
2.3 修改數(shù)據(jù)庫監(jiān)聽地址
在GS_HOME中,本實驗中數(shù)據(jù)庫GS_HOME設(shè)置的為/gaussdb/data/db1。
cd /gaussdb/data/db1 vi postgresql.conf
輸入“:60”找到對應(yīng)位置,然后輸入“i”切換到INSERT模式,將listen_addresses的值修改成為*,修改后按下“Esc”鍵,退出INSERT模式,輸入“:wq”后回車保存。
#listen_addresses = '192.168.0.19' # what IP address(es) to listen on; listen_addresses = '*'
修改完成后重啟數(shù)據(jù)庫生效(-D后面的數(shù)據(jù)庫默認(rèn)路徑,需要根據(jù)實際情況進(jìn)行修改)。
gs_ctl restart -D /gaussdb/data/db1/
3 Windows下配置ODBC數(shù)據(jù)源
Windows操作系統(tǒng)自帶ODBC數(shù)據(jù)源管理器,無需用戶手動安裝管理器便可直接進(jìn)行配置。
3.1下載客戶端GaussDB(for openGauss)驅(qū)動程序并進(jìn)行安裝
下載地址:GaussDB驅(qū)動程序
在本地(例如D:/download)下載ZIP文件后進(jìn)行解壓縮,解壓縮后文件如下。

由于本實驗openGauss安裝在ECS(openEuler ARM)上,所以進(jìn)入Euler2.8_arm_64文件夾,顯示如下:

解壓縮GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz文件,顯示如下:

點(diǎn)擊psqlodbc_x86.msi進(jìn)行安裝:

默認(rèn)設(shè)置,直到安裝完畢。
3.2 打開驅(qū)動管理器
在配置數(shù)據(jù)源時,請使用對應(yīng)的驅(qū)動管理器(假設(shè)操作系統(tǒng)安裝盤符為C盤,如果是其他盤符,請對路徑做相應(yīng)修改):
64位操作系統(tǒng)上進(jìn)行64位程序開發(fā),安裝64位驅(qū)動程序后,使用64位的驅(qū)動管理器:C:\Windows\System32\odbcad32.exe 或者直接使用“控制面板 > 管理工具 > ODBC 數(shù)據(jù)源(64 位)。

3.3 配置數(shù)據(jù)源
在打開的驅(qū)動管理器上,選擇“用戶DSN > 添加 > PostgreSQL Unicode(x64)”,然后進(jìn)行配置:



Data Source:openGauss (數(shù)據(jù)源名稱,可以自定義)。
Database:postgres (需要連接的Datebase名稱)。
Server:openGauss數(shù)據(jù)庫服務(wù)器的公網(wǎng)IP,請根據(jù)實際情況填寫。
Pot:26000 (端口號)。
User Name:dbuser (連接數(shù)據(jù)庫的用戶名,不能使用omm用戶,需要在數(shù)據(jù)庫中創(chuàng)建)
Password:dbuser用戶的密碼,請根據(jù)實際情況填寫。
3.4 驗證并保存設(shè)置
點(diǎn)擊Test,顯示 Connection successful 表示設(shè)置成功:

點(diǎn)擊保存:


配置成功!
3 Qt安裝
下載好 qt-opensource-windows-x86-5.14.2.exe后,無腦next就行。但有一點(diǎn)需要注意。打勾的必須選上!打勾的必須選上!打勾的必須選上!

4 創(chuàng)建一個Qt工程
不會創(chuàng)建的童鞋可以參考qt創(chuàng)建工程教程。
注意!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();
}
顯示結(jié)果如下,就說明連接成功。否則,會彈出報錯提示。

總結(jié)
如果不成功,可能的原因:
- Qt 的MinGW選的不是64位的
- ODBC沒有按照要求配置
以上就是通過Qt連接OpenGauss數(shù)據(jù)庫的詳細(xì)教程的詳細(xì)內(nèi)容,更多關(guān)于Qt連接OpenGauss數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!
- QT連接MYSQL數(shù)據(jù)庫的詳細(xì)步驟
- Qt5連接并操作PostgreSQL數(shù)據(jù)庫的實現(xiàn)示例
- Qt入門學(xué)習(xí)之?dāng)?shù)據(jù)庫操作指南
- QT連接Oracle數(shù)據(jù)庫并實現(xiàn)登錄驗證的操作步驟
- Qt連接MySQL數(shù)據(jù)庫的實現(xiàn)(保姆級成功版教程)
- Qt創(chuàng)建SQlite數(shù)據(jù)庫的示例代碼
- QT連接Mysql數(shù)據(jù)庫的實現(xiàn)步驟
- Qt操作SQLite數(shù)據(jù)庫的教程詳解
- 一篇文章詳解Qt中如何訪問數(shù)據(jù)庫
相關(guān)文章
DBeaver執(zhí)行外部sql文件詳細(xì)圖文教程
DBeaver最近才使用,以前使用的PL/SQL,有些不是很熟悉,記錄下來,下面這篇文章主要給大家介紹了關(guān)于DBeaver執(zhí)行外部sql文件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
關(guān)于面試中常問的數(shù)據(jù)庫回表問題
這篇文章主要介紹了關(guān)于面試中常問的數(shù)據(jù)庫回表問題,回表就是先通過數(shù)據(jù)庫索引掃描出數(shù)據(jù)所在的行,再通過行主鍵id取出索引中未提供的數(shù)據(jù),即基于非主鍵索引的查詢需要多掃描一棵索引樹,需要的朋友可以參考下2023-07-07
數(shù)據(jù)庫建立索引的一般依據(jù)小結(jié)
以下是一些普遍的建立索引時的判斷依據(jù)。一言以蔽之,索引的建立必須慎重,對每個索引的必要性都應(yīng)該經(jīng)過仔細(xì)分析,要有建立的依據(jù)2012-05-05
dbeaver導(dǎo)入導(dǎo)出數(shù)據(jù)庫簡單圖文教程
DBeaver是一款適用于開發(fā)人員、數(shù)據(jù)庫管理員和分析師的多平臺、多數(shù)據(jù)庫管理工具,這篇文章主要給大家介紹了關(guān)于dbeaver導(dǎo)入導(dǎo)出數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2024-01-01
最新Navicat?16??Mac版安裝永久激活教程(親測有效)
這篇文章主要介紹了最新Navicat?16??Mac版安裝永久激活教程(親測有效),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對Navicat?16?永久激活教程感興趣的朋友一起看看吧2022-08-08
最新DataGrip2020.2.x破解版激活碼的步驟詳解(支持Mac/Windows/Linux)
這篇文章主要介紹了最新DataGrip2020.2.x破解版激活碼教程詳解(支持Mac/Windows/Linux),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

