/************************************************************ * 名前リストデータベース作成プログラム [2000/01/25 H.Aman] * ************************************************************/ #include /* ecpg ライブラリを使用するためのヘッダ */ exec sql include sqlca; /* データベースとの通信でエラーが発生した場合の処理関数 */ void error_exit(void); int main(int argc, char* argv[]){ /* ホスト変数として ID と NAME を宣言 */ exec sql begin declare section; int ID; char NAME[256]; exec sql end declare section; /******* データベースに接続 *******/ /* 何らかのエラーが発生した場合は関数 error_exit() をコールする */ exec sql whenever sqlerror do error_exit(); /* データベース bookmark へユーザ dbuser として接続する */ exec sql connect to bookmark user dbuser; /* コマンドライン引数としてデータベースへ登録するための * * 情報(id, name)を受け取る */ if ( argc != 3 ){ fprintf(stderr,"引数の数が不正です.\n ID 番号と名前を指定して下さい.\n"); return 0; } ID = atoi(argv[1]); strcpy(NAME,argv[2]); /******** データベースへ情報の挿入 ***********/ exec sql insert into Name_list (id, name) values (:ID, :NAME); /******** データベースへの接続を切り離す ********/ exec sql commit; exec sql disconnect; return 0; } /* データベースとの通信でエラーが発生した場合の処理関数 */ void error_exit(void){ fprintf(stderr, "PostgreSQL error : %d[%.*s]\n", sqlca.sqlcode, sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc); exec sql whenever sqlerror continue; exec sql rollback; exec sql disconnect; exit(1); }