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的一个简单的小示例。