2011-07-15 14 views
2

私はソフトウェアの初期開発段階にあり、ecpgの使用方法を理解しようとしています。私はPostgreSQL 9.0.4を構築しました。MSVC 2010を使用しており、動作するようにテストプログラムを構築しました。 (http://www.linuxjournal.com/content/accessing-postgresql-cc、Windows用に変更されている点を除きます)MSVCでECPGを使用する方法

しかし、どのようにビルドするのかわからないのですが、ソース内で何を「#include」するかなどはecpgにあります。私は多くの構文例を見つけましたが、テストプログラムやウォークスルーには何もありません。以前のバージョン(8.4.x)のものでさえ、助けになるでしょう。

答えて

2

AFAIKまず、埋め込みSQL Cファイル(pgc拡張子)が必要です。簡単な例:

int main(void) 
{ 
    EXEC SQL BEGIN DECLARE SECTION; 
    int ordinaryInt; 
    EXEC SQL END DECLARE SECTION; 

    EXEC SQL CONNECT TO tcp:postgresql://localhost:5432/postgres AS myconnection USER postgres USING '12345'; 

    EXEC SQL INSERT INTO t (value) VALUES ('abcdefgj'); 
    EXEC SQL COMMIT; 

    EXEC SQL DISCONNECT myconnection; 

    return 0; 
} 

接続文字列はdocでよく説明されています。その後、あなたは、よく知られたCコードにコードの上に変換するために、ecpg.exeを必要とする:

コンパイルする前に、あなたは特別な 関数呼び出しに使用するSQL文を変換し、組み込みSQL C プリプロセッサを通じてファイルを実行します。コンパイル後、必要な機能を含む特別なライブラリ にリンクする必要があります。例えば

"C:\Program Files (x86)\PostgreSQL\9.0\bin\ecpg.exe" -o ecpgTest.c ecpgTest.pgc 

はあなたの生成されたCコードは次のようになります。

/* Processed by ecpg (4.2.1) */ 
/* These include files are added by the preprocessor */ 
#include <ecpglib.h> 
#include <ecpgerrno.h> 
#include <sqlca.h> 
/* End of automatic include section */ 

#line 1 "ecpgTest.pgc" 
int main(void) 
{ 
    /* exec sql begin declare section */ 


#line 4 "ecpgTest.pgc" 
int ordinaryInt ; 
/* exec sql end declare section */ 
#line 5 "ecpgTest.pgc" 


    { ECPGconnect(__LINE__, 0, "tcp:postgresql://localhost:5432/postgres" , "postgres" , "'12345'" , "myconnection", 0); } 
#line 7 "ecpgTest.pgc" 


    { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into t (value) values ('abcdefgj')", ECPGt_EOIT, ECPGt_EORT);} 
#line 9 "ecpgTest.pgc" 

    { ECPGtrans(__LINE__, NULL, "commit");} 
#line 10 "ecpgTest.pgc" 


    { ECPGdisconnect(__LINE__, "myconnection");} 
#line 12 "ecpgTest.pgc" 


    return 0; 
} 

追加でC:\Program Files (x86)\PostgreSQL\9.0\includeパスを追加しますが、ディレクトリ(構成プロパティ→C/C++)を含めるとにlibecpg.libを入れます追加の依存関係(リンカー→入力)おそらく、C:\Program Files (x86)\PostgreSQL\9.0\libパスを追加のライブラリディレクティリーズ(リンカー→一般)に追加する必要があります。 (一部のDLLはC:\Program Files (x86)\PostgreSQL\9.0\binにあります)。

+0

ありがとう、私は週の後半にそれを与えると、それがどのように行くか教えてください。 – Crewe

関連する問題