centos7.2 安装poco

前端之家收集整理的这篇文章主要介绍了centos7.2 安装poco前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

下载地址:https://pocoproject.org/releases/poco-1.7.8/poco-1.7.8p3-all.tar.gz

安装:

#!/bin/sh

# 安装依赖库
# yum install openssl-devel MysqL++-devel

# 默认方式不支持MysqL
#./configure --everything --omit=Data/ODBC,Data/sqlite

make -s

#make -s install


具体安装时要使用什么参数,可执行 "./configure --help" 查看!


安装后,可以编写程序进行测试了。

如果程序运行时,发现找不到运行的动态库,记得将/usr/local/lib 添加到库的搜索 目录下,并执行ldconfig

---------------------------------------------------------------------------------------------------------------------------------

以下为测试程序:main.cpp

#include <iostream>
#include "Poco/String.h"
#include "Poco/Format.h"
#include "Poco/Exception.h"
#include "Poco/Data/StatementImpl.h"
#include "Poco/Data/MysqL/Connector.h"
#include "Poco/Data/MysqL/MysqLException.h"
#include "Poco/Data/Session.h"
#include "Poco/Data/SessionPool.h"
#include "Poco/Data/SessionFactory.h"
#include "Poco/Data/LOB.h"
#include "Poco/Data/MysqL/MysqLStatementImpl.h"
#include "Poco/DateTime.h"
#include "Poco/Data/RecordSet.h"
#include "Poco/Data/Column.h"


using namespace Poco::Data::Keywords;
using namespace Poco::Data;

using Poco::Data::Session;
using Poco::Data::MysqL::ConnectionException;
using Poco::Data::MysqL::StatementException;
using Poco::NotFoundException;
using Poco::Data::Statement;
using Poco::DateTime;
using Poco::Data::RecordSet;

//给出访问数据库的信息
std::string _dbConnString = "host=192.168.2.2;port=3306;"
"user=root;password=123456;"
"db=test;"
"compress=true;auto-reconnect=true";

int main(int argc,char** argv)
{
	MysqL::Connector::registerConnector();
	//与数据库建立一个连接池
	Poco::Data::SessionPool pool(MysqL::Connector::KEY,_dbConnString,1,32,10);
	//从数据库存连接池中获得一个数据库连接
	Poco::Data::Session ses(pool.get());
	//如果与数据库建立会话成功,输出连接信息
	if(ses.isConnected())
		std::cout << "*** Connected to " << '(' << _dbConnString << ')' << std::endl;
	//如果有为名ddjj的表,先删除,方便下面调试
	ses << "DROP TABLE IF EXISTS ddjj",now;

	//把查询结果存储到容器中
	std::vector<std::string> names;
	ses << "show databases",into(names),now;
	//输出查询结果,此处列出所有数据库名称
	for (std::vector<std::string>::const_iterator it = names.begin(); it != names.end(); ++it)
	{
		std::cout << *it << std::endl;
	}

	// 建立一个表,名为ddjj,字段名:name,birth
	ses << "create table ddjj(name VARCHAR(20),birth VARCHAR(20));",now;
	//实现数据纪录的插入
	DateTime bd(1980,4,1);
	DateTime ld(1982,5,9);
	ses << "INSERT INTO ddjj VALUES('Bart Simpson',?)",use(bd),now;
	ses << "INSERT INTO ddjj VALUES('Lisa Simpson',use(ld),now;

	//实现查询方法,并输出查询结果
	std::vector<std::string> names1;
	ses << "select * from ddjj where name like 'Bart Simpson' ",into(names1),now;
	for (std::vector<std::string>::const_iterator it = names1.begin(); it != names1.end(); ++it)
	{
		std::cout << "*** tables: " << *it << std::endl;
	}

	Statement select(ses);
	select << "SELECT * FROM ddjj";
	select.execute();

	//创建纪录集
	RecordSet rs(select);
	std::size_t cols = rs.columnCount();
	//输出列名
	for (std::size_t col = 0; col < cols; ++col)
	{
		std::cout << rs.columnName(col) << std::endl;
	}

	//输出所有查询到的结果
	bool more = rs.moveFirst();
	while (more)
	{
#if 0	// 通过下标取数据
		for (std::size_t col = 0; col < cols; ++col)
		{
			std::cout << rs[col].convert<std::string>() << "\t";
		}
#else	// 通过列名取数据
		printf("name=%s,birth=%s",rs["name"].convert<std::string>().c_str(),rs["birth"].convert<std::string>().c_str());
#endif
		std::cout << std::endl;
		more = rs.moveNext();
	}

	ses.close();
	MysqL::Connector::unregisterConnector();

	return 0;
}



Makefile
CC = gcc
CXX = g++
RM = rm -f

INCLUDE=-I/usr/include/MysqL
LDFLAGS = -lPocoData -lPocoFoundation -lPocoDataMysqL
CFLAGS = -g -std=c++11
ALL = a

a: main.o
	$(CXX) -o $@ $^ $(CFLAGS) $(LDFLAGS)

%.o: %.cpp
	$(CXX) -c $< $(CFLAGS) -o $@ $(INCLUDE)

clean:
	$(RM) $(ALL) *.o

编译过程:

[zcm@localhost poco1]$ make
g++ -c main.cpp -g -std=c++11 -o main.o -I/usr/include/MysqL
g++ -o a main.o -g -std=c++11 -lPocoData -lPocoFoundation -lPocoDataMysqL

猜你在找的CentOS相关文章