# Poco::Data::SQLite

# class SessionImpl

Library: Data/SQLite
Package: SQLite
Header: Poco/Data/SQLite/SessionImpl.h

## Description

Implements SessionImpl interface.

## Inheritance

Direct Base Classes: Poco::Data::AbstractSessionImpl < SessionImpl >

All Base Classes: Poco::Data::AbstractSessionImpl < SessionImpl >

## Member Summary

Member Functions: autoCommit, begin, canTransact, close, commit, connectorName, createStatementImpl, getConnectionTimeout, getTransactionIsolation, getTransactionType, hasTransactionIsolation, isAutoCommit, isConnected, isTransaction, isTransactionIsolation, open, reset, rollback, setConnectionTimeout, setTransactionIsolation, setTransactionType

## Constructors

### SessionImpl

SessionImpl(
const std::string & fileName,
std::size_t loginTimeout = LOGIN_TIMEOUT_DEFAULT
);

Creates the SessionImpl. Opens a connection to the database.

## Destructor

### ~SessionImpl

~SessionImpl() override;

Destroys the SessionImpl.

## Member Functions

### autoCommit

void autoCommit(
const std::string & param64,
bool val
);

Sets autocommit property for the session.

### begin

void begin() override;

Starts a transaction.

### canTransact

bool canTransact() const override;

Returns true if session has transaction capabilities.

### close

void close() override;

Closes the session.

### commit

void commit() override;

Commits and ends a transaction.

### connectorName

const std::string & connectorName() const override;

Returns the name of the connector.

### createStatementImpl

Poco::SharedPtr < Poco::Data::StatementImpl > createStatementImpl() override;

Returns an SQLite StatementImpl.

### getConnectionTimeout

std::size_t getConnectionTimeout() const override;

Returns the session connection timeout value. Timeout value is in seconds.

### getTransactionIsolation

Poco::UInt32 getTransactionIsolation() const override;

Returns the transaction isolation level.

### getTransactionType

TransactionType getTransactionType() const;

Returns begin transaction type.

### hasTransactionIsolation

bool hasTransactionIsolation(
Poco::UInt32 ti
) const override;

Returns true iff the transaction isolation level corresponding to the supplied bitmask is supported.

### isAutoCommit

bool isAutoCommit(
const std::string & name = ""
) const;

Returns autocommit property value.

### isConnected

bool isConnected() const override;

Returns true if connected, false otherwise.

### isTransaction

bool isTransaction() const override;

Returns true iff a transaction is a transaction is in progress, false otherwise.

### isTransactionIsolation

bool isTransactionIsolation(
Poco::UInt32 ti
) const override;

Returns true iff the transaction isolation level corresponds to the supplied bitmask.

### open

void open(
const std::string & connect = ""
) override;

Opens a connection to the Database.

An in-memory system database (sys), with a single table (dual) containing single field (dummy) is attached to the database. The in-memory system database is used to force change count to be reset to zero on every new query (or batch of queries) execution. Without this functionality, select statements executions that do not return any rows return the count of changes effected by the most recent insert, update or delete. In-memory system database can be queried and updated but can not be dropped. It may be used for other purposes in the future.

### reset

void reset() override;

Do nothing

### rollback

void rollback() override;

Aborts a transaction.

### setConnectionTimeout

void setConnectionTimeout(
std::size_t timeout
) override;

Sets the session connection timeout value. Timeout value is in seconds.

### setTransactionIsolation

void setTransactionIsolation(
Poco::UInt32 ti
) override;

Sets the transaction isolation level. Warning! In order to use TRANSACTION_READ_UNCOMMITTED isolation level, it is important to keep in mind that enableSharedCache() and setThreadMode() affect connection lock behavior. Eg. TRANSACTION_READ_UNCOMMITTED with enableSharedCache() and setThreadMode(THREAD_MODE_MULTI) in a multiple thread, shared connection and custom code for table-lock exceptions scenario, multiple connections on the same thread with TRANSACTION_READ_UNCOMMITTED will throw "database locked" exception.

### setTransactionType

void setTransactionType(
TransactionType transactionType
);

Sets begin transaction type for the session.

### getConnectionTimeout

Poco::Any getConnectionTimeout(
const std::string & prop
) const;

### getTransactionType

Poco::Any getTransactionType(
const std::string & prop
) const;

### setConnectionTimeout

void setConnectionTimeout(
const std::string & prop,
const Poco::Any & value
);

### setTransactionType

void setTransactionType(
const std::string & prop,
const Poco::Any & value
);