#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;
try {
pgres = PQexec(conn, "select schemaname, tablename, tableowner from pg_tables");
if (PQresultStatus(pgres) != PGRES_TUPLES_OK) {
throw -1;
}
int row = PQntuples(pgres); // 行数取得
int col = PQnfields(pgres); // 列数取得
// 列名ループ
for (int c = 0; c < col; c++) {
//列名取得
char* name = PQfname(pgres, c);
printf("%-25s | ", name);
}
printf("\n-----------------------------------------------------------------------------------\n");
// 行番号ループ
for (int r = 0; r < row; r++) {
// 列ループ
for (int c = 0; c < col; c++) {
// 値取得
char* val = PQgetvalue(pgres, r, c);
printf("%-25s | ", val);
}
puts("");
}
PQclear(pgres);
}
catch (...) {
printf("%s", PQerrorMessage(conn));
PQclear(pgres);
}
PQfinish(conn);
}