# Poco::Data

# class SessionFactory

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.