`
gabriel1017
  • 浏览: 1481 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

0
5
分享到:
评论

相关推荐

    C++Builder连接局域网中MySQL.pdf

    标题中的"C++Builder连接局域网中MySQL"指的是使用C++Builder编程环境,通过ODBC(Open Database Connectivity)驱动程序连接并操作局域网内的MySQL数据库。这个过程涉及到多个步骤,包括环境准备、ODBC配置以及C++...

    oracle 数据库,在C++中用连接池实现高速连接与访问.rar

    本话题将深入探讨如何在C++环境中利用连接池技术实现对Oracle数据库的高速连接与访问。 一、Oracle数据库基础 Oracle数据库提供了一套完整的数据管理解决方案,包括事务处理、数据仓库、网络数据库、安全性等。它的...

    C++ MongoDB 连接池代码实现

    该代码是C++ MongoDB的连接池代码实现。代码封装了一个连接池类对象,通过该对象提供的连接池来操作MongoDB,提升了性能,减少了数据库连接资源的开销。

    linux C/C++ 数据库连接池

    在Linux环境下,C/C++开发数据库连接池是提高应用程序性能和效率的重要技术。数据库连接池是一种管理数据库连接的机制,它允许程序重复使用已建立的数据库连接,而不是每次需要时都创建新的连接。这减少了创建和销毁...

    C++phpstudy连接数据库测试_C++mysqlphpstudy_

    本示例聚焦于"C++phpstudy连接数据库测试",这是一个在phpStudy环境下使用C++连接MySQL数据库的实践案例。phpStudy是一个流行的集成开发环境,集成了PHP、Apache、MySQL等组件,方便开发者进行Web开发。 首先,我们...

    C++连接数据库,连接类

    在C++编程中,连接数据库是一项常见的任务,特别是在开发需要数据存储和检索的应用程序时。本教程将聚焦于如何在C++中实现数据库连接,主要使用面向对象的方法,即通过创建一个连接类来处理数据库交互。我们将探讨...

    linux(centos) 下C++连接mysql数据库

    在Linux(CentOS)系统中,使用C++连接MySQL数据库是一项常见的任务,特别是在开发服务器端应用程序时。这里我们将深入探讨如何实现这一目标,以及在这个过程中可能遇到的关键知识点。 首先,你需要确保你的系统...

    dev c++ 连接 mysql 方法、库

    在IT行业中,数据库连接是开发过程中的重要环节,特别是对于使用C++编程语言的开发者来说。Dev C++是一个轻量级的C++集成开发环境,它可以帮助开发者编写、编译和运行C++程序。本教程将详细介绍如何在Dev C++环境中...

    mongodb的c++连接接口

    5. **基本用法**:C++ 驱动通常通过创建 `MongoDB::Client` 对象来建立到 MongoDB 服务器的连接,然后使用 `MongoDB::Database` 和 `MongoDB::Collection` 对象来操作数据。例如,你可以创建一个会话,选择数据库,...

    网络收集 C++ MYSQL 连接池 可编译运行

    C++与MySQL数据库之间的通信是通过特定的API接口实现的,而在实际的大型系统中,为了提高数据库操作的效率和性能,通常会采用连接池(Connection Pool)技术。本资源包含了一个可编译运行的C++ MySQL连接池示例,这...

    C++使用ADO连接SQL Server数据库源代码

    以下将详细讲解如何使用C++通过ADO连接到SQL Server数据库,并基于提供的"ConnDatabase"源代码进行学习。 1. ADO简介:ADO是微软的组件对象模型(COM)接口,它提供了一种简单的方式来访问各种数据源,包括SQL ...

    c++ network连接库

    本篇将详细探讨C++中的网络连接库,特别是TCP和UDP客户端的封装类及其应用。 首先,TCP(传输控制协议)是一种面向连接的、可靠的网络通信协议,它确保数据的有序、无损传输。在C++中,我们可以使用标准库`...

    c++ ado连接oracle

    C++与Oracle数据库之间的连接是通过ADO(ActiveX Data Objects)实现的,这是一种在Microsoft环境中广泛使用的数据库访问技术。在本文中,我们将深入探讨如何在C++程序中使用ADO连接Oracle数据库,包括两种不同的...

    c++连接远程sqlserver

    当需要与数据库进行交互,例如远程的SQL Server时,C++提供了多种方法来实现这种连接。本篇文章将详细探讨如何使用C++来连接远程SQL Server数据库,以及相关的知识点。 首先,要连接到SQL Server,C++开发者通常会...

    酒店管理系统,连接SQLServer 数据库 C++/Qt

    酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 C++/Qt酒店管理系统,连接SQLServer 数据库 ...

    C++ TCP客户端非阻塞连接超时测试源码

    总之,"C++ TCP客户端非阻塞连接超时测试源码"是一个实用的示例,它展示了如何在C++中处理TCP连接的非阻塞和超时问题,这对于开发高可用性和高性能的网络应用程序至关重要。通过学习和分析这段代码,开发者可以提升...

    C++连接SQL SERVER2008数据库

    ### C++连接SQL Server 2008数据库详解 #### 一、引言 本文将详细介绍如何使用C++语言连接并操作SQL Server 2008数据库。文章基于作者的实际经验编写,旨在解决网络上一些关于C++连接SQL Server 2008数据库方法不...

    C++连接sql数据库

    C++连接SQL数据库 在本文中,我们将介绍如何使用C++语言连接SQL数据库,并详细介绍了ODBC和ADO两种连接方式的使用。 标题:C++连接SQL数据库 描述:C++中用ODBC和ADO方式连接SQL数据库简述! 标签:odbc 部分...

    c++ Pin和Qss连接wifi

    在C++编程环境中,连接WiFi是一项常见的任务,特别是在嵌入式系统或物联网设备中。"c++ Pin和Qss连接wifi"的标题提及了两种不同的连接方式:PIN码认证(PIN)和快速设置安全(QSS)。这两种方法主要用于简化无线网络...

    c++ 连接mysql 跨平台

    当我们谈论"C++连接MySQL跨平台"时,我们关注的是如何在不同的操作系统(如Windows、Linux、macOS等)上使用C++编写程序来与MySQL数据库进行交互。这涉及到C++的MySQL客户端库(通常称为libmysqlclient)的使用,它...

Global site tag (gtag.js) - Google Analytics