libpqを使ったサンプル

「libpqを使ったサンプル」の編集履歴(バックアップ)一覧はこちら

libpqを使ったサンプル」(2010/07/07 (水) 23:53:17) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

***[[接続できない場合>http://www35.atwiki.jp/space_escalator/pages/29.html]] // OperetionPostgreSQL.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "libpq-fe.h" static void exit_nicely(PGconn *conn) { PQfinish(conn); exit(1); } int _tmain(int argc, _TCHAR* argv[]) { const char *conninfo; PGconn *conn; PGresult *res; int nFields, nrows; int i, j; char buff[1024]; /* データベースとの接続を確立する */ conninfo = "host=localhost dbname=Test user=postgres port=5432"; conn = PQconnectdb(conninfo); /* バックエンドとの接続確立に成功したかを確認する */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); exit_nicely(conn); } /* トランザクションブロックを開始する。 */ res = PQexec(conn, "BEGIN"); if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn)); PQclear(res); exit_nicely(conn); } /* * 不要になったら、メモリリークを防ぐためにPGresultをPQclearすべき。 */ PQclear(res); //sprintf(buff,"select * from config_table where id =%d",id); sprintf(buff,"select * from config_table"); res = PQexec(conn, buff); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn)); PQclear(res); exit_nicely(conn); } /* まず属性名を表示する。 */ nFields = PQnfields(res);//要素の数を取得 nrows = PQntuples(res);//行の数を取得 for (i = 0; i < nFields; i++) printf("%-15s ", PQfname(res, i)); printf("\n\n"); /* そして行を表示する。 */ for (i = 0; i < PQntuples(res); i++) { for (j = 0; j < nFields; j++) printf("%-15s", PQgetvalue(res, i, j)); printf("\n"); } PQclear(res); /* ポータルを閉ざす。ここではエラーチェックは省略した… */ /* res = PQexec(conn, "CLOSE myportal"); PQclear(res);*/ /* トランザクションを終了する */ res = PQexec(conn, "END"); PQclear(res); /* データベースとの接続を閉じ、後始末を行う。 */ PQfinish(conn); return 0; }
***[[接続できない場合>http://www35.atwiki.jp/space_escalator/pages/29.html]] // OperetionPostgreSQL.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #include "libpq-fe.h" static void exit_nicely(PGconn *conn) { PQfinish(conn); exit(1); } int _tmain(int argc, _TCHAR* argv[]) { const char *conninfo; PGconn *conn; PGresult *res; int nFields, nrows; int i, j; char buff[1024]; /* データベースとの接続を確立する */ conninfo = "host=localhost dbname=Test user=postgres port=5432"; conn = PQconnectdb(conninfo); /* バックエンドとの接続確立に成功したかを確認する */ if (PQstatus(conn) != CONNECTION_OK) { fprintf(stderr, "Connection to database failed: %s", PQerrorMessage(conn)); exit_nicely(conn); } /* トランザクションブロックを開始する。 */ res = PQexec(conn, "BEGIN"); if (PQresultStatus(res) != PGRES_COMMAND_OK) { fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn)); PQclear(res); exit_nicely(conn); } /* * 不要になったら、メモリリークを防ぐためにPGresultをPQclearすべき。 */ PQclear(res); //sprintf(buff,"select * from config_table where id =%d",id); sprintf(buff,"select * from config_table"); res = PQexec(conn, buff); if (PQresultStatus(res) != PGRES_TUPLES_OK) { fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn)); PQclear(res); exit_nicely(conn); } /* まず属性名を表示する。 */ nFields = PQnfields(res);//要素の数を取得 nrows = PQntuples(res);//行の数を取得 for (i = 0; i < nFields; i++) printf("%-15s ", PQfname(res, i)); printf("\n\n"); /* そして行を表示する。 */ for (i = 0; i < PQntuples(res); i++) { for (j = 0; j < nFields; j++) printf("%-15s", PQgetvalue(res, i, j)); printf("\n"); } PQclear(res); /* ポータルを閉ざす。ここではエラーチェックは省略した… */ /* res = PQexec(conn, "CLOSE myportal"); PQclear(res);*/ /* トランザクションを終了する */ res = PQexec(conn, "END"); PQclear(res); /* データベースとの接続を閉じ、後始末を行う。 */ PQfinish(conn); return 0; } ----

表示オプション

横に並べて表示:
変化行の前後のみ表示: