# 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

### SessionFactory

SessionFactory();

Creates the SessionFactory.

## Destructor

### ~SessionFactory

~SessionFactory();

Destroys the SessionFactory.

## Member Functions

### add

void add(
const std::string & key,
Connector * pIn
);

Registers a Connector under the given 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
);

Creates a Session for the given key with the connectionString. Throws an Poco:Data::UnknownDataBaseException if no Connector is registered for that 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.