| 導購 | 订阅 | 在线投稿
分享
 
 
 

在C下操作PostgreSql

來源:互聯網網民  2008-05-18 21:58:26  評論

在C下操作PostgreSql

LinuxAid.com.cn 01-09-06 12:29 779p eight

在C下操作PostgreSql

作者 EIGHT

前一陣子開始,我開始使用postgresql,把最近寫的一個簡單的程序拿出來與

大家交流交流,我也是初學者,請多多指教. Postgresql用rpm包安裝極爲簡單,很

容易就成功.改天我寫一寫安裝過程. 但我用tar包安裝沒有成功,安裝過程都參

照參考手冊上所寫的,就是不行,哪位有安裝成功過,把安裝過程寫下來吧. 總的

感覺是postgresql是個好東東,簡單易學,功能方面也不差.下面這個程序涉及的

函數與功能雖然不多,卻是操作postgresql 最經常用到的.

程序:

/*程序在redhat6.0上調試通過

*該程序使用pgsql的內部函數實現數據庫的一般功能

*這裏create,insert,select,update,drop幾個最常用的SQL語句

*具體還有些更強大的功能,如阻塞等,需要進一步研究

*詳細資料可以查看參考手冊,那邊有所有的函數調用*/

/*頭文件*/

#include <stdio.h>

#include

main() {

char *pghost,

*pgport,

*pgoptions,

*pgtty;

char *dbName;

int nFields;

int i, j;

PGconn *conn;

PGresult *res;

/*

* 程序開頭需要設定連接到數據庫服務器的一些參數,如果設置值爲

NULL,

* 則使用環境變量中設置的缺省值。

*/

pghost = NULL; /* 服務器的主機名 */

pgport = NULL; /* 服務器端口 */

pgoptions = NULL;/* 附加的功能參數 */

pgtty = NULL; /* 服務器的調試tty */

dbName = "mytest"; /* 要操作的數據庫名 */

/* 連接數據庫服務器*/

conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);

/* 檢查連接是否成功 */

if (PQstatus(conn) == CONNECTION_BAD)

{

fprintf(stderr, "Connection to database '%s' failed.

", dbName);

fprintf(stderr, "%s", PQerrorMessage(conn));

exit_nicely(conn);

}

/* 開始處理數據塊 */

res = PQexec(conn, "BEGIN");

if (!res' 'PQresultStatus(res) != PGRES_COMMAND_OK)

{

fprintf(stderr, "BEGIN command failed

");

PQclear(res);

exit_nicely(conn);

}

/*調用PQclear在PQresult的遊標不再使用後清除遊標,防止內存溢出 */

PQclear(res);

/* 建立一個叫test1的表 */

PQexec(conn,"create table test1 (name char(20),age int4)");

/* 插入數據 */

PQexec(conn,"insert into test1 values ('cjm',10)");

PQexec(conn,"insert into test1 values ('eight',20)");

PQexec(conn,"insert into test1 values ('linuxaid',30)");

/* 開始查詢 */

printf("all the date is:

");

res = PQexec(conn, "select * from test1");

for (i = 0; i < PQntuples(res); i++)

{

for (j = 0; j < PQnfields(res); j++)

printf("%-15s", PQgetvalue(res, i, j));

printf("

");

}

PQclear(res);

/* 使用SQL的update函數 */

PQexec(conn,"update test1 set age=25 where name='eight'");

/* 打印出更新後的數據 */

printf("

the new date is:

");

res = PQexec(conn, "select * from test1");

for (i = 0; i < PQntuples(res); i++)

{

for (j = 0; j < PQnfields(res); j++)

printf("%-15s", PQgetvalue(res, i, j));

printf("

");

}

PQclear(res);

/* 刪除表 */

PQexec(conn,"drop table test1");

/* 關閉和數據庫的連接 */

PQfinish(conn);

}

 
特别声明:以上内容(如有图片或视频亦包括在内)为网络用户发布,本站仅提供信息存储服务。
 
  在C下操作PostgreSql   LinuxAid.com.cn 01-09-06 12:29 779p eight   在C下操作PostgreSql   作者 EIGHT   前一陣子開始,我開始使用postgresql,把最近寫的一個簡單的程序拿出來與   大家交流交流,我也是初學者,請多多指教. Postgresql用rpm包安裝極爲簡單,很   容易就成功.改天我寫一寫安裝過程. 但我用tar包安裝沒有成功,安裝過程都參   照參考手冊上所寫的,就是不行,哪位有安裝成功過,把安裝過程寫下來吧. 總的   感覺是postgresql是個好東東,簡單易學,功能方面也不差.下面這個程序涉及的   函數與功能雖然不多,卻是操作postgresql 最經常用到的.   程序:   /*程序在redhat6.0上調試通過   *該程序使用pgsql的內部函數實現數據庫的一般功能   *這裏create,insert,select,update,drop幾個最常用的SQL語句   *具體還有些更強大的功能,如阻塞等,需要進一步研究   *詳細資料可以查看參考手冊,那邊有所有的函數調用*/   /*頭文件*/   #include <stdio.h>   #include   main() {   char *pghost,   *pgport,   *pgoptions,   *pgtty;   char *dbName;   int nFields;   int i, j;   PGconn *conn;   PGresult *res;   /*   * 程序開頭需要設定連接到數據庫服務器的一些參數,如果設置值爲   NULL,   * 則使用環境變量中設置的缺省值。   */   pghost = NULL; /* 服務器的主機名 */   pgport = NULL; /* 服務器端口 */   pgoptions = NULL;/* 附加的功能參數 */   pgtty = NULL; /* 服務器的調試tty */   dbName = "mytest"; /* 要操作的數據庫名 */   /* 連接數據庫服務器*/   conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);   /* 檢查連接是否成功 */   if (PQstatus(conn) == CONNECTION_BAD)   {   fprintf(stderr, "Connection to database '%s' failed.   ", dbName);   fprintf(stderr, "%s", PQerrorMessage(conn));   exit_nicely(conn);   }   /* 開始處理數據塊 */   res = PQexec(conn, "BEGIN");   if (!res' 'PQresultStatus(res) != PGRES_COMMAND_OK)   {   fprintf(stderr, "BEGIN command failed   ");   PQclear(res);   exit_nicely(conn);   }   /*調用PQclear在PQresult的遊標不再使用後清除遊標,防止內存溢出 */   PQclear(res);   /* 建立一個叫test1的表 */   PQexec(conn,"create table test1 (name char(20),age int4)");   /* 插入數據 */   PQexec(conn,"insert into test1 values ('cjm',10)");   PQexec(conn,"insert into test1 values ('eight',20)");   PQexec(conn,"insert into test1 values ('linuxaid',30)");   /* 開始查詢 */   printf("all the date is:   ");   res = PQexec(conn, "select * from test1");   for (i = 0; i < PQntuples(res); i++)   {   for (j = 0; j < PQnfields(res); j++)   printf("%-15s", PQgetvalue(res, i, j));   printf("   ");   }   PQclear(res);   /* 使用SQL的update函數 */   PQexec(conn,"update test1 set age=25 where name='eight'");   /* 打印出更新後的數據 */   printf("   the new date is:   ");   res = PQexec(conn, "select * from test1");   for (i = 0; i < PQntuples(res); i++)   {   for (j = 0; j < PQnfields(res); j++)   printf("%-15s", PQgetvalue(res, i, j));   printf("   ");   }   PQclear(res);   /* 刪除表 */   PQexec(conn,"drop table test1");   /* 關閉和數據庫的連接 */   PQfinish(conn);   }
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有