1.Poco进行数据库操作的步骤一般是:

a. 创建会话(session)
b. 从DB中读写数据(into, use)
c. 使用statements
d. 使用容器(Collection) (数据,集合...)
e. 使用limit限定
f. 如何使用复杂的数据类型(如何将一个C++对象映射到数据库的表


下面是一个简单的操作数据库的示例:

#include "Poco/String.h"
#include "Poco/Format.h"
#include "Poco/Exception.h"
#include "Poco/Data/Common.h"
#include "Poco/Data/BLOB.h"
#include "Poco/Data/StatementImpl.h"
#include "Poco/Data/MySQL/Connector.h"
#include "Poco/Data/MySQL/MySQLException.h"
#include "Poco/Data/SQLite/Connector.h"
#include <iostream>

using namespace Poco::Data;
using Poco::Data::MySQL::ConnectionException;
using Poco::Data::MySQL::StatementException;
using Poco::format;
using Poco::NotFoundException;

Poco::SharedPtr<Poco::Data::Session> _pSession = 0;
//Poco::SharedPtr<SQLExecutor> _pExecutor = 0;

std::string _dbConnString = "user=smart;password=smart;db=smart;compress=true;auto-reconnect=true";

int _tmain(int argc, _TCHAR* argv[])
{
	MySQL::Connector::registerConnector();

	try
	{
		_pSession = new Session(SessionFactory::instance().create(MySQL::Connector::KEY, _dbConnString));
	}catch (ConnectionException& ex)
	{
		std::cout << "!!! WARNING: Connection failed. MySQL tests will fail !!!" << std::endl;
		std::cout << ex.displayText() << std::endl;
	}

	if (_pSession && _pSession->isConnected()) 
		std::cout << "*** Connected to " << '(' << _dbConnString << ')' << std::endl;

	int i;

	Poco::Data::Session ses(MySQL::Connector::KEY, _dbConnString);
	int count = 0;
	ses << "SELECT COUNT(*) FROM SMART_U_STREET",into(count),now;
	std::cout<<"street has "<<count<<std::endl;

	MySQL::Connector::unregisterConnector();



	//

	//SQLite::Connector::registerConnector();
	//Session ses2(SQLite::Connector::KEY,"D:\\_fengbishikaifa\\sqllite\\test_sqlite.db");
	//std::string name;
	//ses2 << "select id,name from smart_u_street",into(i),into(name),now;
	//std::cout<<""<<i<<"|"<<name<<std::endl;
	//SQLite::Connector::unregisterConnector();

	std::cin>>i;
	return 0;
}

2.Poco数据库缓冲池的使用

Poco::Data::SessionPool用于管理一组session。当需要session时,Session池首先查找已初始化的会话,如果找到了,将返回一个session对象给调用者,并设置此session对象为使用当中。

这里是使用sessionPool的一个简单的小示例。



Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐