pg_ctl start しておく必要がある。
includeディレクトリ: C:\PostgreSQL\include
ライブラリディレクトリ:C:\PostgreSQL\lib
必要なDLLは:C:\PostgreSQL\bin
・libcrypto-3-x64.dll
・libiconv-2.dll
・libintl-9.dll
・libpq.dll
・libssl-3-x64.dll
・libwinpthread-1.dll
#include <iostream> #include <libpq-fe.h> #pragma comment(lib,"libpq.lib") int main() {
// データベースへ接続する
// ユーザー名:postgres // パスワード:password PGconn* conn; conn = PQconnectdb("user=postgres password=password"); if (PQstatus(conn) != CONNECTION_OK) { printf("%s", PQerrorMessage(conn)); exit(1); } PGresult* pgres; #if 1 // ユーザー名 cuser , cpassword でユーザー作成 pgres = PQexec(conn, "CREATE USER cuser WITH PASSWORD 'cpassword'"); if (PQresultStatus(pgres) != PGRES_COMMAND_OK) { // 確認方法:postgres=# SELECT usename FROM pg_user; printf("%s", PQerrorMessage(conn));
PQclear(pgres); exit(1); }
PQclear(pgres);
// データベース名 cdatabase , 使用者 cuser でユーザー作成 pgres = PQexec(conn, "CREATE DATABASE cdatabase OWNER cuser"); if (PQresultStatus(pgres) != PGRES_COMMAND_OK) { // 確認方法:\l printf("%s", PQerrorMessage(conn));
PQclear(pgres);
exit(1); }
PQclear(pgres); #else // ユーザやデータベースを削除する場合:
pgres = PQexec(conn, "DROP DATABASE cdatabase"); if (PQresultStatus(pgres) != PGRES_COMMAND_OK) { printf("%s", PQerrorMessage(conn));
PQclear(pgres); exit(1); }
PQclear(pgres);
pgres = PQexec(conn, "DROP USER cuser"); if (PQresultStatus(pgres) != PGRES_COMMAND_OK) { printf("%s", PQerrorMessage(conn));
PQclear(pgres); exit(1); } PQclear(pgres);
#endif
PQfinish(conn); }