首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

C++ postagesql 联接

2012-09-24 
C++ postagesql 连接/* * PgConnector.cpp * *Created on: 2012-9-12 *Author: Gabriel */#include db/Pg

C++ postagesql 连接

/* * PgConnector.cpp * *  Created on: 2012-9-12 *      Author: Gabriel */#include "db/PgConnector.h"#include <stdio.h>#include <stdlib.h>#include "libpq-fe.h"namespace gaby {PgConnector::PgConnector() {}PgConnector::~PgConnector() {}} /* namespace gaby */int main(int argc,char **argv) {const char *conninfo = "dbname=mvmdb";PGconn *conn;PGresult *res;int nFields;int i, j;/* Make a connection to the database */conn = PQconnectdb(conninfo);/* 检查后端连接成功建立 */if (PQstatus(conn) != CONNECTION_OK) {fprintf(stderr, "Connection to database failed: %s",PQerrorMessage(conn));PQfinish(conn);return -1;}/* * 我们的测试实例涉及游标的使用,这个时候我们必须使用事务块 * 我们可以把全部事情放在一个  "select * from pg_database" * PQexec() 里,不过那样太简单了,不是个好例子。 *//* 开始一个事务块 */res = PQexec(conn, "BEGIN");if (PQresultStatus(res) != PGRES_COMMAND_OK) {fprintf(stderr, "BEGIN command failed: %s", PQerrorMessage(conn));PQclear(res);PQfinish(conn);return -1;}/* * 应该在结果不需要的时候 PQclear PGresult,以避免内存泄漏 */PQclear(res);//fprintf(stderr, "测试输出错误: %s", PQerrorMessage(conn));/* * 从系统表 pg_database 里抓取数据 */res = PQexec(conn, "DECLARE myportal CURSOR FOR select * from pg_database");if (PQresultStatus(res) != PGRES_COMMAND_OK) {fprintf(stderr, "DECLARE CURSOR failed: %s", PQerrorMessage(conn));PQclear(res);PQfinish(conn);return -1;}PQclear(res);res = PQexec(conn, "FETCH ALL in myportal");if (PQresultStatus(res) != PGRES_TUPLES_OK) {fprintf(stderr, "FETCH ALL failed: %s", PQerrorMessage(conn));PQclear(res);PQfinish(conn);return -1;}/* 首先,打印属性名称 */nFields = PQnfields(res);for (i = 0; i < nFields; i++)printf("%-15s", PQfname(res, i));printf("\n\n");/* 然后打印行 */for (i = 0; i < PQntuples(res); i++) {for (j = 0; j < nFields; j++)printf("%-15s", PQgetvalue(res, i, j));printf("\n");}PQclear(res);/* 关闭游标 ... 我们不用检查错误 ... */res = PQexec(conn, "CLOSE myportal");PQclear(res);/* 结束事务 */res = PQexec(conn, "END");PQclear(res);/* 关闭数据库连接并清理 */PQfinish(conn);return 0;}

?

经过测试,可以用

工程设置:

include :?? .....\postgresql-9.1.1-1-windows-binaries\include

lib:??????????? -lpg

热点排行