LiteSQL 0.3.10
database.hpp
Go to the documentation of this file.
1/* LiteSQL
2 *
3 * The list of contributors at http://litesql.sf.net/
4 *
5 * See LICENSE for copyright information. */
6
7#ifndef litesql_database_hpp
8#define litesql_database_hpp
9#include <string>
10#include <set>
11#include "litesql/types.hpp"
12#include "litesql/expr.hpp"
13#include "litesql/backend.hpp"
14#include "litesql/cursor.hpp"
18
19namespace litesql {
20using namespace std;
21
23public:
24 string name;
25 string type;
26
27 class EqualName {
28 string m_name;
29 public:
30 EqualName(const std::string& name) : m_name(name) {};
31 bool operator()(ColumnDefinition d) { return d.name==m_name;};
32 };
33};
34
37class Database {
38 friend class Updater;
39private:
41 string backendType;
43 string connInfo;
45 Database &operator=(const Database &op);
47 void openDatabase();
48protected:
53 class SchemaItem {
54 public:
55 string name, type, sql;
56 SchemaItem(const string& n, const string& t, const string& s)
57 : name(n), type(t), sql(s) {}
58 };
59
60 void storeSchemaItem(const SchemaItem& s) const;
63 virtual std::vector<SchemaItem> getSchema() const {
64 return std::vector<SchemaItem>();
65 }
66
68 std::vector<SchemaItem> getCurrentSchema() const;
77 void upgradeTable(string name, string oldSchema, string newSchema) const;
78
79 bool addColumn(const string & name,const ColumnDefinition & column_def) const;
80
81public:
83 bool verbose;
90 Database(const string& backendType, const string& connInfo);
93 Database(const Database &op);
95 virtual ~Database();
97 void create() const;
100 void drop() const;
103 bool needsUpgrade() const;
105 void upgrade() const;
109 Records query(const string &query) const;
110 template <class T>
111 Cursor<T> cursor(const string& query) const {
112 if (verbose)
113 cerr << query << endl;
114 return Cursor<T>(*this, backend->cursor(query));
115 }
116
122
123 void insert(const string &table, const Record &r,
124 const Split& fields=Split()) const;
132 string groupInsert(Record tables, Records fields, Records values,
133 string sequence) const;
138 void delete_(const string &table, const Expr& e= Expr()) const;
140 void begin() const { backend->begin(); }
142 void commit() const { backend->commit(); }
144 void rollback() const { backend->rollback(); }
145};
146
147}
148
149#endif
Classes Backend, Backend::Cursor and Backend::Result.
An abstract base class for interfacing with relational databases.
Definition backend.hpp:19
Definition database.hpp:22
used to iterate results of SQL statement, creates objects of type T from retrieved records.
Definition cursor.hpp:22
intermediate representation of single entity in relational database, table, index or sequence
Definition database.hpp:53
bool needsUpgrade() const
returns true if schema of backend database is different from schema returned by getSchema.
Definition database.cpp:184
void drop() const
converts CREATE-statements (of getSchema) to DROP statements and executes them
Definition database.cpp:167
virtual std::vector< SchemaItem > getSchema() const
returns database schema.
Definition database.hpp:63
void rollback() const
cancels active SQL transaction
Definition database.hpp:144
void upgrade() const
tries to upgrade database on disk so that schemas would be compatible
Definition database.cpp:198
Records query(const string &query) const
executes SQL query
Definition database.cpp:219
void create() const
creates database based on getSchema
Definition database.cpp:158
void commit() const
commits SQL transaction
Definition database.hpp:142
void insert(const string &table, const Record &r, const Split &fields=Split()) const
executes SQL INSERT statement.
Definition database.cpp:226
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
Definition database.cpp:239
virtual ~Database()
closes database
Definition database.cpp:155
void begin() const
begins SQL transaction
Definition database.hpp:140
void upgradeTable(string name, string oldSchema, string newSchema) const
adds missing and removes extra fields to/from table (tries to preserve data).
Definition database.cpp:85
Backend * backend
backend implementation
Definition database.hpp:50
void storeSchemaItem(const SchemaItem &s) const
stores SchemaItem to 'schema' - table (deletes old versions)
Definition database.cpp:24
std::vector< SchemaItem > getCurrentSchema() const
queries 'schema' - table and converts results to SchemaItem-objects
Definition database.cpp:36
Database(const string &backendType, const string &connInfo)
opens connection to backend, throw exception if fails or cannot found a Backend class
Definition database.cpp:146
bool verbose
verbosity, prints queries to cerr if true
Definition database.hpp:83
void delete_(const string &table, const Expr &e=Expr()) const
deletes rows from single table, deleted rows are selected by Expr if specified
Definition database.cpp:252
A base class for expression in WHERE - clause.
Definition expr.hpp:19
SQL data row wrapper.
Definition types.hpp:20
splits and joins strings.
Definition split.hpp:15
Contains class Cursor.
Contains Expr-class hierarchy and operator overloadings for them.
contains class Record and typedef Records
std::vector< Record > Records
shortcut
Definition types.hpp:26

SourceForge.net Logo