poco linux,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

#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<:string> names;

ses << "show databases", into(names), now;

//输出查询结果,此处列出所有数据库名称

for (std::vector<: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<:string> names1;

ses << "select * from ddjj where name like 'Bart Simpson' ",

into(names1),

now;

for (std::vector<: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<:string>() << "\t";

}

#else// 通过列名取数据

printf("name=%s, birth=%s", rs["name"].convert<:string>().c_str(), rs["birth"].convert<: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

编译过程:

[[email protected] 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值