2011-07-15 24 views
2

我正處於軟件的早期開發階段,我正試圖弄清楚如何使用ecpg。我已經成功構建PostgreSQL 9.0.4使用MSVC 2010並已成功構建測試程序以確保其正常工作。 (http://www.linuxjournal.com/content/accessing-postgresql-cc,除了針對Windows進行了修改)。如何在MSVC中使用ECPG

但是我不知道如何構建,在源代碼中「#include」什麼等等。我已經找到了很多的語法示例,但是沒有像測試程序或步行一樣。即使是以前的版本(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被很好地解釋。之後,你需要ecpg.exe,改造上面的代碼爲著名的C代碼:

之前編譯運行通過嵌入式SQLÇ 預處理器,它轉換你用特殊 函數調用SQL語句的文件。編譯後,您必須鏈接到包含所需功能的特殊庫 。

例如:

"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