Linux下PostgresQL数据库C语言接口:libpq (一)数据库连接
来源:互联网 发布:java static final区别 编辑:程序博客网 时间:2024/04/18 07:48
转载请注明本文出处:leonidasFlames的blog,链接为:Linux下PostgresQL数据库C语言接口:libpq (一)
libpq 是 PostgreSQL的C语言应用程序的接口。libpq 是一套允许客户程序向PostgreSQL 后端服务进程发送查询 并且获得查询返回的库.libpq 同时也是其他几个 PostgreSQL 应用接口下面的引擎, 包括libpq++ (C++),libpgtcl(Tcl),Perl,和ecpg。
注意事项:
1. 在C语言程序中,需要包含<libpq-fe.h>头文件,并必须在编译时添加相应链接标记:-lpq。
2. 在C++语言程序中,有两套头文件及其库函数,分别是早期的<libpq++.h>和<pqxx/pqxx>,两者库函数完全不同。其中<libpq++.h>为更早期的,网上示例较多。
一、libpq库下C语言程序对PostgreSQL数据的访问连接
1.首先看一个简单示例:
#include <iostream> #include<postgresql/libpq-fe.h> 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<<"连接PostgreSQL数据库 成功!"<<endl; PQfinish(conn); cout<<"与PostgreSQL数据库连接 关闭!"<<endl; } else { cout<<"连接失败!"<<endl; } return 0; } /******************************************************************************/
2. 与后端数据库服务器建立一个新的连接
PGconn *PQconnectdb(const char *conninfo) ;
从字符串conninfo传参以建立与Database的连接。字符串中可以包含如下信息
host 主机 hostaddr 主机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);
返回状态,最常用的是这两个:
CONNECTION_OK 与DB成功连接 CONNECTION_BAD与DB连接失败
通常,一个OK状态将保持到PQfinish(),但一个通讯失败可能导致状态过早地变为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的其他函数,诸如数据库查询函数等等。
- Linux下PostgresQL数据库C语言接口:libpq (一)数据库连接
- Linux下PostgresQL数据库C语言接口:libpq (二)数据库访问
- Linux下PostgresQL数据库C语言接口:libpq (三)控制事务
- postgresql libpq C语言网络库接口操作数据库例子
- postgresql libpq c接口 操作数据库例子
- C && PGSQL Linux下PostgresQL数据库C语言接口(转载)
- linux下libpq使用连接postgresql
- postgresql C++接口libpq
- VS2010中c++程序调用PostgreSQL数据库C接口libpq.lib的项目Properties设置
- PostgreSQL: libpq - C 库
- PostgreSQL数据库学习手册之libpq - C 库--介绍
- 数据库编程接口Libpq
- 数据库编程接口Libpq
- PostgreSQL: libpq - C 库(待续)
- Linux下libpq开发
- 数据库编程接口Libpq 2
- 数据库编程接口Libpq 3
- 访问PostgreSQL:C语言接口
- Linux C编程一站式学习
- .NET异步编程总结----四种实现模式
- VS2010如何调试IIS上的网站?
- js 自记忆函数
- atoi函数的实现
- Linux下PostgresQL数据库C语言接口:libpq (一)数据库连接
- javascript数组总结
- eclipse的graphical layout窗口工作不正常
- 自己编的关于完数的程序
- struts对cookie的存取
- hdu 1421 搬寝室
- 基于UDP的socket编程
- 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
- 4