Library: Data
Package: DataCore
Header: Poco/Data/SessionFactory.h
Description
A SessionFactory is a singleton class that stores Connectors and allows to create Sessions of the required type:
Session ses(SessionFactory::instance().create(connector, connectionString));
where the first param presents the type of session one wants to create (e.g. for SQLite one would choose "SQLite") and the second param is the connection string that the connector requires to connect to the database.
A concrete example to open an SQLite database stored in the file "dummy.db" would be
Session ses(SessionFactory::instance().create(SQLite::Connector::KEY, "dummy.db"));
An even simpler way to create a session is to use the two argument constructor of Session, which automatically invokes the SessionFactory:
Session ses("SQLite", "dummy.db");
Member Summary
Member Functions: add, create, instance, remove
Constructors
Destructor
~SessionFactory
~SessionFactory();
Member Functions
add
void add(
Connector * pIn
);
Registers a Connector under its key at the factory. If a registration for that key is already active, the first registration will be kept, only its reference count will be increased. Always takes ownership of parameter pIn.
create
Session create(
const std::string & key,
const std::string & connectionString,
std::size_t timeout = Session::LOGIN_TIMEOUT_DEFAULT
);
Creates a Session for the given key with the connectionString. Throws an Poco:Data::UnknownDataBaseException if no Connector is registered for that key.
create
Session create(
const std::string & uri,
std::size_t timeout = Session::LOGIN_TIMEOUT_DEFAULT
);
Creates a Session for the given URI (must be in key:///connectionString format). Throws a Poco:Data::UnknownDataBaseException if no Connector is registered for the key.
instance
static SessionFactory & instance();
returns the static instance of the singleton.
remove
void remove(
const std::string & key
);
Lowers the reference count for the Connector registered under that key. If the count reaches zero, the object is removed.