通過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(); }
顯示結果如下,就說明連接成功。否則,會彈出報錯提示。
總結
如果不成功,可能的原因:
- Qt 的MinGW選的不是64位的
- ODBC沒有按照要求配置
以上就是通過Qt連接OpenGauss數據庫的詳細教程的詳細內容,更多關於Qt連接OpenGauss數據庫的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- Qt數據庫相關應用開發總結
- gaussdb 200安裝 data studio jdbc idea鏈接保姆級安裝步驟
- QT5中使用SQLite的實現方法
- 淺談PostgreSQL的客戶端認證pg_hba.conf
- PostgreSQL入門簡介