/*
* 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
分享到:
相关推荐
标题中的"C++Builder连接局域网中MySQL"指的是使用C++Builder编程环境,通过ODBC(Open Database Connectivity)驱动程序连接并操作局域网内的MySQL数据库。这个过程涉及到多个步骤,包括环境准备、ODBC配置以及C++...
本话题将深入探讨如何在C++环境中利用连接池技术实现对Oracle数据库的高速连接与访问。 一、Oracle数据库基础 Oracle数据库提供了一套完整的数据管理解决方案,包括事务处理、数据仓库、网络数据库、安全性等。它的...
该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。
在Linux环境下,C/C++开发数据库连接池是提高应用程序性能和效率的重要技术。数据库连接池是一种管理数据库连接的机制,它允许程序重复使用已建立的数据库连接,而不是每次需要时都创建新的连接。这减少了创建和销毁...
本示例聚焦于"C++phpstudy连接数据库测试",这是一个在phpStudy环境下使用C++连接MySQL数据库的实践案例。phpStudy是一个流行的集成开发环境,集成了PHP、Apache、MySQL等组件,方便开发者进行Web开发。 首先,我们...
在C++编程中,连接数据库是一项常见的任务,特别是在开发需要数据存储和检索的应用程序时。本教程将聚焦于如何在C++中实现数据库连接,主要使用面向对象的方法,即通过创建一个连接类来处理数据库交互。我们将探讨...
在Linux(CentOS)系统中,使用C++连接MySQL数据库是一项常见的任务,特别是在开发服务器端应用程序时。这里我们将深入探讨如何实现这一目标,以及在这个过程中可能遇到的关键知识点。 首先,你需要确保你的系统...
在IT行业中,数据库连接是开发过程中的重要环节,特别是对于使用C++编程语言的开发者来说。Dev C++是一个轻量级的C++集成开发环境,它可以帮助开发者编写、编译和运行C++程序。本教程将详细介绍如何在Dev C++环境中...
5. **基本用法**:C++ 驱动通常通过创建 `MongoDB::Client` 对象来建立到 MongoDB 服务器的连接,然后使用 `MongoDB::Database` 和 `MongoDB::Collection` 对象来操作数据。例如,你可以创建一个会话,选择数据库,...
C++与MySQL数据库之间的通信是通过特定的API接口实现的,而在实际的大型系统中,为了提高数据库操作的效率和性能,通常会采用连接池(Connection Pool)技术。本资源包含了一个可编译运行的C++ MySQL连接池示例,这...
以下将详细讲解如何使用C++通过ADO连接到SQL Server数据库,并基于提供的"ConnDatabase"源代码进行学习。 1. ADO简介:ADO是微软的组件对象模型(COM)接口,它提供了一种简单的方式来访问各种数据源,包括SQL ...
本篇将详细探讨C++中的网络连接库,特别是TCP和UDP客户端的封装类及其应用。 首先,TCP(传输控制协议)是一种面向连接的、可靠的网络通信协议,它确保数据的有序、无损传输。在C++中,我们可以使用标准库`...
C++与Oracle数据库之间的连接是通过ADO(ActiveX Data Objects)实现的,这是一种在Microsoft环境中广泛使用的数据库访问技术。在本文中,我们将深入探讨如何在C++程序中使用ADO连接Oracle数据库,包括两种不同的...
当需要与数据库进行交互,例如远程的SQL Server时,C++提供了多种方法来实现这种连接。本篇文章将详细探讨如何使用C++来连接远程SQL Server数据库,以及相关的知识点。 首先,要连接到SQL Server,C++开发者通常会...
酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 ...
总之,"C++ TCP客户端非阻塞连接超时测试源码"是一个实用的示例,它展示了如何在C++中处理TCP连接的非阻塞和超时问题,这对于开发高可用性和高性能的网络应用程序至关重要。通过学习和分析这段代码,开发者可以提升...
### C++连接SQL Server 2008数据库详解 #### 一、引言 本文将详细介绍如何使用C++语言连接并操作SQL Server 2008数据库。文章基于作者的实际经验编写,旨在解决网络上一些关于C++连接SQL Server 2008数据库方法不...
C++连接SQL数据库 在本文中,我们将介绍如何使用C++语言连接SQL数据库,并详细介绍了ODBC和ADO两种连接方式的使用。 标题:C++连接SQL数据库 描述:C++中用ODBC和ADO方式连接SQL数据库简述! 标签:odbc 部分...
在C++编程环境中,连接WiFi是一项常见的任务,特别是在嵌入式系统或物联网设备中。"c++ Pin和Qss连接wifi"的标题提及了两种不同的连接方式:PIN码认证(PIN)和快速设置安全(QSS)。这两种方法主要用于简化无线网络...
当我们谈论"C++连接MySQL跨平台"时,我们关注的是如何在不同的操作系统(如Windows、Linux、macOS等)上使用C++编写程序来与MySQL数据库进行交互。这涉及到C++的MySQL客户端库(通常称为libmysqlclient)的使用,它...