linux下C語言編程3-串連PostgreSQL

來源:互聯網
上載者:User

PostgreSQL開發了libpq庫,可供C語言編寫外部程式以串連PG資料庫。

在C程式中,開頭需要載入libpq庫,#include "libpq-fe.h"即可,注意是引號。

編譯這個程式:

gcc -I/usr/local/pgsql/include -o pq PQresult.c -L/usr/local/pgsql/lib -lpq

-I/usr/local/pgsql/include是PG安裝後的include目錄。

-L/usr/local/pgsql/lib 是PG安裝後的lib目錄。

下面給出一個完整的例子:

#include <stdio.h>#include "libpq-fe.h"// 輸出列印PGresult結果void PQresultPrint(PGresult *res){int nFields = PQnfields(res);int nTuples = PQntuples(res);int i, j;for (i=0; i<nTuples; i++){for (j=0; j<nFields; j++){printf("%s ", PQgetvalue(res, i, j));}printf("/n");}}// 編譯命令:// gcc -I/usr/local/pgsql/include -o pq PQresult.c -L/usr/local/pgsql/lib -lpqPGresult *ExecuteQuery(char *host, int port, char *dbname, char *query){PGconn *conn;PGresult *res;char str[128];sprintf(str, "host=%s port=%d dbname=%s", host, port, dbname);// 建立串連conn = PQconnectdb(str);if(PQstatus(conn) == CONNECTION_BAD){fprintf(stderr,"資料庫連接失敗! host: %s/n", host);fprintf(stderr,"%s",PQerrorMessage(conn));}// 執行SQLres = PQexec(conn, query);if (PQresultStatus(res) == PGRES_FATAL_ERROR){fprintf(stderr, "%s", PQerrorMessage(conn));}// 命令語句:CREATE, UPDATE, DELETE等if (PQresultStatus(res) == PGRES_COMMAND_OK){printf("%s/n", PQcmdTuples(res));}// SELECT SQLif (PQresultStatus(res) == PGRES_TUPLES_OK){}PQfinish(conn);return res;}int main(){char *sql = "SELECT * FROM student;";PGresult *res = ExecuteQuery("127.0.0.1", 5432, "test", sql);PQresultPrint(res);PQclear(res);return 0;}如果出現“資料庫連接失敗”,
1)要檢查用戶端(程式)與服務端(資料庫)網路是否相通,ping命令即可。
2)服務端儲存資料的目錄裡有個檔案pg_hba.conf,可在裡面仿照最後幾句添加用戶端的IP,表示對用戶端的信任。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.