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"
19 namespace litesql {
20 using namespace std;
21 
23 public:
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 
37 class Database {
38  friend class Updater;
39 private:
41  string backendType;
43  string connInfo;
45  Database &operator=(const Database &op);
47  void openDatabase();
48 protected:
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  };
60  void storeSchemaItem(const SchemaItem& s) const;
63  virtual std::vector<SchemaItem> getSchema() const {
64  return std::vector<SchemaItem>();
65  }
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 
81 public:
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 
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
Definition: backend.hpp:14
virtual void rollback() const
rollback SQL transaction
Definition: backend.hpp:70
Contains class Cursor.
A base class of databases.
Definition: database.hpp:37
virtual std::vector< SchemaItem > getSchema() const
returns database schema.
Definition: database.hpp:63
A base class for expression in WHERE - clause.
Definition: expr.hpp:19
Contains Expr-class hierarchy and operator overloadings for them.
contains class Record and typedef Records
Definition: database.hpp:22
virtual Cursor * cursor(const string &query) const =0
executes SQL-query
An abstract base class for interfacing with relational databases.
Definition: backend.hpp:19
intermediate representation of single entity in relational database, table, index or sequence ...
Definition: database.hpp:53
void rollback() const
cancels active SQL transaction
Definition: database.hpp:144
SQL data row wrapper.
Definition: types.hpp:19
Definition: database.hpp:27
splits and joins strings.
Definition: split.hpp:15
bool verbose
verbosity, prints queries to cerr if true
Definition: database.hpp:83
virtual void commit() const
commit SQL transaction
Definition: backend.hpp:68
Classes Backend, Backend::Cursor and Backend::Result.
used to iterate results of SQL statement, creates objects of type T from retrieved records...
Definition: cursor.hpp:22
virtual void begin() const
begin SQL transaction, may or may not have an effect
Definition: backend.hpp:66
std::vector< Record > Records
shortcut
Definition: types.hpp:26
void commit() const
commits SQL transaction
Definition: database.hpp:142
Backend * backend
backend implementation
Definition: database.hpp:50
void begin() const
begins SQL transaction
Definition: database.hpp:140

SourceForge.net Logo