2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|

2018-01-26 postgreSQLデータベースからの読み出すプログラム [長年日記]

/*
   postgreSQLデータベースからの読み出し テストプログラム
*/
 
/*
  g++ -g read_sql.cpp -o read_sql.exe -I"D:\PostgreSQL\pg96\include" -L"D:\PostgreSQL\pg96\lib" -llibpq
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>
#include <sys/types.h>
#include "libpq-fe.h"
 
const char *conninfo = "host=localhost user=postgres password=c-anemone dbname=ca_db";
PGconn *conn;
 
int main()
{
  // データベースとの接続を確立する 
  conn = PQconnectdb(conninfo);
 
  // バックエンドとの接続確立に成功したかを確認する */
  if (PQstatus(conn) != CONNECTION_OK){
	fprintf(stderr, "Connection to database failed: %s",
			PQerrorMessage(conn));
  }
 
  char stringSQL[256] = {0};
	
 
  sprintf(stringSQL, "SELECT * FROM side_list where s = 90;"); // 検索条件
  PGresult *res = PQexec(conn, stringSQL);
 
  // エラーチェック
  if( PQresultStatus( res ) != PGRES_TUPLES_OK ) {
    // error
    printf("error_2");
    exit(-1);
  }  
 
  int res_cnt = PQntuples( res ); // 検索数を得る
 
  for(int loop = 0; loop < res_cnt ; loop++) {
	int a = atoi(PQgetvalue(res, loop, 0));  // 文字列から整数へ
	int b = atoi(PQgetvalue(res, loop, 1));  // 文字列から整数へ
	int c = atoi(PQgetvalue(res, loop, 2));  // 文字列から整数へ
	double d = atof(PQgetvalue(res, loop, 3));  // 文字列から実数へ
 
	printf("a=%d, b=%d, c=%d, d=%f\n", a,b,c,d);
  }
 
  // 値セットが無い場合でも必ず結果をクリアする
  PQclear(res);
 
  
  return 0;
}
syntax2html