linux下C言語プログラミング3-接続PostgreSQL


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 
#include "libpq-fe.h"

//     PGresult  
void PQresultPrint(PGresult *res)
{
	int nFields = PQnfields(res);
	int nTuples = PQntuples(res);
	int i, j;
	for (i=0; iExecuteQuery(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));
	}
	
	//   SQL
	res = 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 SQL
	if (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, 。