kumasysjp

PostgreSQLライブラリ Libpqを使ったプログラム作成のためのひながた (Windows, Linux)

目的

Postgre SQL サーバにアクセスせしめたるためのライブラリ Libpq を用いるための Windows, Linux 両対応のプログラム作成の最小ひな作成

 

動作環境

ホストOS側 :   Windows 11

ゲストOS側:     Debian 12.6

VMクライアント:  VirtualBox 6.1

VSCode 1.100.2 (Linux 用のビルド・デバッグの場合)

Visual Studio 2022  (Windows 用のビルド・デバッグの場合)

ひな  サンプル内容

libpqUser

 

但し,  Linux の場合、動作機に


  sudo  apt-get install   libpq-dev
 

で ランタイムを入れておく必要がある。

 

LinuxUniq.cpp


#include "build.h"
#ifdef Linux
#endif

 

 

WindowsUniq.cpp


#include "build.h"
#ifdef Linux
#endif
 

 

build.h


#include 
#include 
#include "libpq-fe.h"

#ifdef __x86_64
#define x64
#endif

#ifdef Windows
#define CONINFO "host=127.0.0.1 port=5432 dbname=azcts2 user=postgres password=nomaru2011"
#else
#define CONINFO "host=192.168.56.1 port=5432 dbname=azcts2 user=postgres password=nomaru2011"
#endif
 

 

libpqUser.cpp


#include "build.h"

int main()
{

#ifdef Windows
#endif

    PGconn *conn;
    PGresult *res;
    int i;

    conn = PQconnectdb(CONINFO);
    if (PQstatus(conn) != CONNECTION_OK)
    {
        fprintf(stderr, "%s", PQerrorMessage(conn));
        exit(1);
    }

    res = PQexec(conn, "SET CLIENT_ENCODING TO 'UTF-8'; SELECT name  FROM articles order by id");
    if (PQresultStatus(res) != PGRES_TUPLES_OK)
    {
        fprintf(stderr, "%s", PQerrorMessage(conn));
        exit(1);
    }


    for (i = 0; i < PQntuples(res); i++)
    {
        printf("%s\n", PQgetvalue(res, i, 0));
    }

    PQclear(res);
    PQfinish(conn);
    return 0;
}