C&&PGSQL Linux下PostgresQLデータベースC言語インタフェース(転載)

2422 ワード

転載は本文の出典を明記してください:leonidasFlamesのblog、リンクは:Linuxの下でPostgresQLデータベースC言語インタフェース:libpq(一)
 
 
libpqはPostgreSQLのC言語アプリケーションのインタフェースです.libpqは、クライアント・プログラムがPostgreSQLバックエンド・サービス・プロセスにクエリーを送信し、クエリーが返されるライブラリです.libpqは、libpq+(C++)、libpgtcl(Tcl)、Perl、およびecpgを含む他のいくつかのPostgreSQLアプリケーション・インタフェースの下にあるエンジンです.
注意事項:
1.C言語プログラムでは、ヘッダファイルを含める必要があり、コンパイル時に対応するリンクタグ:-lpqを追加する必要があります.
2.C++言語プログラムでは、2つのヘッダファイルとそのライブラリ関数があり、それぞれ初期の和であり、両者のライブラリ関数は完全に異なる.これらのうち、より初期のものでは、ネット上の例が多い.
 
一、libpqライブラリ下のC言語プログラムによるPostgreSQLデータへのアクセス接続
 
1.まず簡単な例を見てみましょう.
using namespace std;

int main(int argc, char** argv)
{
	const char*conninfo="hostaddr=127.0.0.1 user=Meme dbname=MyDatabasepassword=123";
	PGconn* conn=PQconnectdb(conninfo);
	if(PQstatus(conn)==CONNECTION_OK){
		cout<

2.バックエンド・データベース・サーバへの新しい接続の確立
PGconn *PQconnectdb(const char *conninfo) ;
文字列conninfoからパラメータを転送してDatabaseへの接続を確立します.文字列には、次の情報が含まれます.
ホストホストホストホストIPアドレスportポートまたはソケット拡張ファイル名dbnameデータベース名userユーザー名passwordユーザーパスワードoptionデバッグオプション
およびconnect_timeout,tty,sslmode,requiresslなどの他の非常用情報.
一般的に使用されるのは次のとおりです.
    const char* conninfo="hostaddr=127.0.0.1user=Meme dbname=MyDatabase password=123";
以上のいくつかの必要な情報.文字列の書き方は概ね「キーワード=数値」形式であり、この例を参照すればよい.
3. PGconn *PQsetdbLogin(const char* pghost,const char* pgport,const char*pgoption,const char* pgtty,const char* dbname,const char* login,const char* pwd);
この関数はPGconnectdb()の前身であり、機能的に一致しており、固定個数のパラメータとは異なり、具体的には公式ドキュメントを参照することができる.PGconnectdb()は使用上より柔軟であるため、PGconnectdb()を最初に使用します.
 
4.接続を閉じる
void PQfinish(PGconn* conn);
PGconnオブジェクトで使用されているメモリを解放し、PGconnポインタは再使用できません
 
5.接続ステータスを返します.
ConnStatusType PQstatus(const PGconn* conn);
ステータスを返します.最も一般的なのは、次の2つです.
CONNECTION_OK DBへのCONNECTION接続成功_BADとDBの接続に失敗しました
通常、1つのOK状態はPQfinish()に維持されますが、1つの通信に失敗すると、状態が早すぎるとBADになる可能性があります.この場合,プログラムはPQreset()リカバリを試用することができる.
 
6.void PQreset(PGconn*conn)を再接続する.
 
7.データベース・サーバへの非ブロック接続の確立
PGconn* PQconnectStart(const char* conninfo);
PosgresPollingStatusType *PQconnectPoll(PGconn *conn);
あなたのアプリケーション実行スレッドは、実行時にリモートI/Oをブロックしません.PQconnectPoll()を呼び出す前にsocketが正しい状態であることを確認する必要があります.どちらの関数もスレッドをブロックしません.
PostgreSQL libpqのデータベース接続は、上記の例を参照して、C言語プログラムがPostgreSQLデータベースに正常に接続できるようになりました.その後、libpqの他の関数、例えばデータベースクエリー関数などについて説明します.