1. ホーム
  2. データベース
  3. その他のデータベース

QtによるOpenGaussデータベースへの接続の詳細チュートリアル

2022-01-17 08:56:16

1 ソフトウェアのインストール

  • qt-opensource-windows-x86-5.14.2.exe (以前のバージョンでは動作しない場合があります。インストール時にMinGW64が含まれている必要があります。)
  • OpenGauss
  • ODBC

 2 接続環境の準備

openGaussが配置されているルート環境で、以下の手順を実行します。

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"./datadir is -D "/gaussdb/data/db1"
サーバーシグナル

注:データベースが以前に起動されていない場合、以下の結果が返されますので、そのまま操作を続行してください。

<ブロッククオート

[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ファイル "/gaussdb/data/db1/postmaster.pid"が存在しません。
[2021-04-27 17:02:59.640][15354][][gs_ctl]: サーバーは起動していますか?

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 OSにはODBCデータソースマネージャーが付属しているので、マネージャーを手動でインストールすることなく、直接設定することができます。

3.1 クライアント側のGaussDB(openGauss用)ドライバをダウンロードし、インストールします。

ダウンロードはこちら GaussDBドライバ
ZIPファイルをローカルにダウンロード(例:D:/download)して解凍すると、解凍されたファイルは次のようになります。

今回の実験ではopenGaussはECS(openEuler ARM)にインストールしているので、Euler2.8_arm_64フォルダに行くと以下のように表示されます。

GaussDB-Kernel-V500R001C10-Windows-Odbc.tar.gz ファイルを解凍すると、以下のようになります。

psqlodbc_x86.msiをクリックして、インストールします。

インストールが完了するまでの初期設定。

3.2 ドライバマネージャを開く

データソースの設定を行う際は、対応するドライバマネージャを使用してください(OSのインストールディスクをCと仮定し、他のディスクの場合は適宜パスを修正してください)。
64ビットOSで64ビットプログラムを開発する場合、64ビットドライバをインストールした後、64ビットドライバマネージャを使用してください。64ビットドライバーをインストール後、64ビットドライバーマネージャー C:\[email protected] または直接コントロールパネル> Management Tools> ODBC Data Source (64ビット)を使用してください。

3.3 データソースの設定

開いたドライバーマネージャーで、quot;ユーザーDSN > 追加 > PostgreSQL Unicode(x64)" を選択し、設定します。


データソース:openGauss(データソース名、カスタマイズ可能)。
データベース:postgres ( 接続するデータベースの名前 ).
Server: openGaussデータベースサーバーのパブリックIP、適宜記入してください。
Pot:26000(ポート番号)。
ユーザー名:dbuser(データベースに接続するためのユーザー名、オムユーザーは使用不可、データベースで作成する必要がある)
パスワード:dbuserユーザのパスワード、適当に記入してください。

3.4 設定の確認と保存

Testをクリックすると、Connection successfulと表示され、セットアップが成功したことを示します。

クリックすると保存されます。



コンフィギュレーション成功

3 Qtのインストール

qt-opensource-windows-x86-5.14.2.exe をダウンロードしたら、次は無心になるだけです。しかし、注意しなければならない点があります。チェックボックスが選択されている必要があります チェックボックスが選択されている必要があります! チェックボックスが選択されている必要があります!

4 Qtプロジェクトの作成

作成方法が分からない方は qtプロジェクト作成チュートリアル .
注意! キットは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");//the Data Source you configured in 2.3, such as openGauss
	qDebug()<<"ODBC connect?"<<<db.isValid();
    db.setHostName("xxxx.xxxx.xxxx");//your IP address
    db.setDatabaseName(dsn);
    db.setUserName("xxx"); //username
    db.setPassword("xxxx");//password
    db.setPort(26000); //opengauss port number is 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が必要なように設定されていない

以上、Qtを使ったOpenGaussデータベースへの接続の詳細なチュートリアルを紹介しました。Qtを使ったOpenGaussデータベースへの接続の詳細については、Script Houseの他の関連記事を参照してください。