#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libpq-fe.h>
#define DB_NAME ""
#define DB_USER "postgres"
#define DB_PWD "pgAdmin"
PGconn *pCon;
PGresult *pRes;
/**********************************************************
* 主処理
*/
int main( int iInp, char *pInp[] ){
char sSql[1000];
int ii, iCnt;
if( iInp < 2 ){
return (0);
}else if( strlen( pInp[1] ) > 100 ){
return (1);
}
/// DB接続
pCon = PQsetdbLogin( "", "", NULL, NULL, DB_NAME, DB_USER, DB_PWD );
if( PQstatus( pCon ) == CONNECTION_BAD ){
printf( "DB接続エラー: %s\n", PQerrorMessage( pCon ) );
return (1);
}
/// データ登録
sprintf( sSql, "insert into 伝言板(伝言) values('%s')", pInp[1] );
pRes = PQexec( pCon, sSql );
if( PQresultStatus( pRes ) != PGRES_COMMAND_OK ){
printf( "データ登録: %s\n ⇒ %s", PQerrorMessage( pCon ), sSql );
return (3);
}
PQclear( pRes );
/// データ抽出
pRes = PQexec( pCon, "select 番号,to_char(登録日,'MM/DD HH24:MI'),伝言 from 伝言板"
" order by 番号 desc limit 10;" );
if( PQresultStatus( pRes ) != PGRES_TUPLES_OK ){
printf( "データ抽出: %s\n", PQerrorMessage( pCon ) );
return (4);
}
/// 抽出データ出力
iCnt = PQntuples( pRes );
for( ii=0; ii<iCnt; ii++ ){
printf( "%4d [%s] %s\n"
, atoi( PQgetvalue( pRes, ii, 0 ) )
, PQgetvalue( pRes, ii, 1 )
, PQgetvalue( pRes, ii, 2 ) );
}
PQclear( pRes );
/// DB切断
PQfinish( pCon );
} |