LiteSQL 0.3.10
litesql::Database Class Reference

A base class of databases. More...

#include <database.hpp>

Collaboration diagram for litesql::Database:

Classes

class  SchemaItem
 intermediate representation of single entity in relational database, table, index or sequence More...

Public Member Functions

 Database (const string &backendType, const string &connInfo)
 opens connection to backend, throw exception if fails or cannot found a Backend class
 Database (const Database &op)
 opens new connection to same database
virtual ~Database ()
 closes database
void create () const
 creates database based on getSchema
void drop () const
 converts CREATE-statements (of getSchema) to DROP statements and executes them
bool needsUpgrade () const
 returns true if schema of backend database is different from schema returned by getSchema.
void upgrade () const
 tries to upgrade database on disk so that schemas would be compatible
Records query (const string &query) const
 executes SQL query
template<class T>
Cursor< T > cursor (const string &query) const
void insert (const string &table, const Record &r, const Split &fields=Split()) const
 executes SQL INSERT statement.
string groupInsert (Record tables, Records fields, Records values, string sequence) const
 executes multiple INSERT-statements and assigns same 'row id' for first field of every record
void delete_ (const string &table, const Expr &e=Expr()) const
 deletes rows from single table, deleted rows are selected by Expr if specified
void begin () const
 begins SQL transaction
void commit () const
 commits SQL transaction
void rollback () const
 cancels active SQL transaction

Public Attributes

bool verbose
 verbosity, prints queries to cerr if true

Protected Member Functions

void storeSchemaItem (const SchemaItem &s) const
 stores SchemaItem to 'schema' - table (deletes old versions)
virtual std::vector< SchemaItemgetSchema () const
 returns database schema.
std::vector< SchemaItemgetCurrentSchema () const
 queries 'schema' - table and converts results to SchemaItem-objects
void upgradeTable (string name, string oldSchema, string newSchema) const
 adds missing and removes extra fields to/from table (tries to preserve data).
bool addColumn (const string &name, const ColumnDefinition &column_def) const

Protected Attributes

Backendbackend
 backend implementation

Friends

class Updater

Detailed Description

A base class of databases.

Can be used without inheriting own version of Database using query()-method. See Defining Database

Constructor & Destructor Documentation

◆ Database() [1/2]

litesql::Database::Database ( const string & backendType,
const string & connInfo )

opens connection to backend, throw exception if fails or cannot found a Backend class

Parameters
backendTypebackend type ("postgresql","mysql" or "sqlite3")
connInfoconnection params, syntax "param=value param=value ..." valid keys: host,user,password,database and port

References backend, and verbose.

Referenced by Database().

◆ Database() [2/2]

litesql::Database::Database ( const Database & op)

opens new connection to same database

Parameters
opopened Database

References Database(), and verbose.

Member Function Documentation

◆ delete_()

void litesql::Database::delete_ ( const string & table,
const Expr & e = Expr() ) const

deletes rows from single table, deleted rows are selected by Expr if specified

Parameters
tabletarget table
eselection expression

References query().

Referenced by storeSchemaItem().

◆ getCurrentSchema()

vector< Database::SchemaItem > litesql::Database::getCurrentSchema ( ) const
protected

queries 'schema' - table and converts results to SchemaItem-objects

Returns
SchemaItem-objects

References query().

Referenced by needsUpgrade(), and upgrade().

◆ getSchema()

virtual std::vector< SchemaItem > litesql::Database::getSchema ( ) const
inlineprotectedvirtual

returns database schema.

Returns
SchemaItem-objects

Referenced by create(), drop(), needsUpgrade(), and upgrade().

◆ groupInsert()

string litesql::Database::groupInsert ( Record tables,
Records fields,
Records values,
string sequence ) const

executes multiple INSERT-statements and assigns same 'row id' for first field of every record

Parameters
tablesdestination tables for insert operation
fieldsrecord of field names per table
valuesrecord of values per table
sequencesequence where row id-numbers are pulled
Returns
new row id

References backend, litesql::Split::join(), and verbose.

◆ insert()

void litesql::Database::insert ( const string & table,
const Record & r,
const Split & fields = Split() ) const

executes SQL INSERT statement.

Parameters
tabledestination table
rvalues
fieldsfield names Values are escaped using escapeSQL - function

References litesql::Split::join(), and query().

Referenced by storeSchemaItem().

◆ query()

Records litesql::Database::query ( const string & query) const

executes SQL query

Parameters
queryquery string
Returns
result set

References backend, and verbose.

Referenced by create(), delete_(), drop(), getCurrentSchema(), insert(), upgrade(), and upgradeTable().

◆ upgradeTable()

void litesql::Database::upgradeTable ( string name,
string oldSchema,
string newSchema ) const
protected

adds missing and removes extra fields to/from table (tries to preserve data).

copies data to a temporary table and then back to upgraded table because all backends do not support ALTER TABLE ADD ... - SQL statements.

Parameters
nametable name
oldSchemacurrent schema of table
newSchemaupgraded schema of table

References begin(), commit(), litesql::Split::join(), and query().

Referenced by upgrade().


The documentation for this class was generated from the following files:

SourceForge.net Logo