JR中央線・三鷹駅
南口 徒歩3分

[ 地図 ]
TOP 学習環境 SQL C言語 Java

 C言語の基礎(4)
    SQLをC言語でプログラミングできます
DB接続
  1. テキストエディタで ciapia.c を作成する
  2. #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 );
    }		

  3. ソースファイルをコンパイルし実行ファイルを作成する
  4. $ gcc -o ciapia -I/usr/include/postgresql ciapia.c -lpq

  5. テーブルを作成する
  6. $ psql -U postgres
    postgres=# create table 伝言板( 番号 serial, 伝言 text, 登録日 timestamp DEFAULT CURRENT_TIMESTAMP );
    postgres=# \q

  7. 実行ファイルを起動する
  8. $ ./ciapia Message
C言語(1) C言語(2) C言語(3) C言語(4) C言語(5)
Copyright© Ciapia IT Academy 2022.