10#include <soci/sqlite3/soci-sqlite3.h>
19 DBSessionManager::DBSessionManager() : _dbSession (NULL) {
23 DBSessionManager::DBSessionManager (
const DBParams& iDBParams)
29 DBSessionManager::~DBSessionManager() {
31 if (_dbSession != NULL) {
35 delete _dbSession; _dbSession = NULL;
39 soci::session& DBSessionManager::getDBSessionRef()
const {
40 assert (_dbSession != NULL);
45 void DBSessionManager::init (
const DBParams& iDBParams) {
48 if (iDBParams.checkSQLite() ==
false) {
49 std::ostringstream errorStr;
50 errorStr <<
"At least one of the parameters for the SQL "
51 <<
"database is empty: " << iDBParams;
53 throw XapianTravelDatabaseEmptyException (errorStr.str());
58 _dbSession =
new soci::session();
63 _dbSession->open (soci::sqlite3, iDBParams.toSQLiteConnectionString());
65 }
catch (std::exception
const& lException) {
66 std::ostringstream errorStr;
67 errorStr <<
"Error while opening a connection to database: "
68 << lException.what() << std::endl;
69 errorStr <<
"Database parameters used: " << iDBParams.toString();
71 throw SQLDatabaseImpossibleConnectionException (errorStr.str());
#define OPENTREP_LOG_ERROR(iToBeLogged)