Augustus 3.4.0
Loading...
Searching...
No Matches
sqliteDB.hh
1/*
2 * sqliteDB.hh
3 *
4 * License: Artistic License, see file LICENSE.TXT or
5 * https://opensource.org/licenses/artistic-license-1.0
6 */
7
8#ifndef __SQLITEDB_H__
9#define __SQLITEDB_H__
10
11#include <string>
12#include <vector>
13#include <sqlite3.h>
14#include <cstdint>
15
16using namespace std;
17
18//forward declarations
19
25class SQLiteDB;
26
30class Statement;
31
40enum OpenMode{ro,rw,crw};
41
43public:
44 SQLiteDB(const char* f, OpenMode m=ro) : dbfile(f), database(NULL) {
45 open(m);
46 }
47 ~SQLiteDB(){
48 close();
49 }
50
51 void connect(const char* filename);
52 void close();
53 void exec(const char *sql);
54 void open(OpenMode m);
55
56 // create tables
57 bool tableExists(string table_name);
58 void createTableGenomes();
59 void createTableSpeciesnames();
60 void createTableSeqnames();
61 void createTableHints();
62 void createTableFeatureTypes();
63 int getSpeciesID(string species, bool clean=false, bool noInsert=false);
64
65 void deleteHints(int speciesid);
66 void deleteGenome(int speciesid);
67 void deleteSeqNames(int speciesid);
68
69
70 void beginTransaction();
71 void endTransaction();
72
73 inline int lastInsertID(){return (int)sqlite3_last_insert_rowid(database);}
74 inline const char* error(){return sqlite3_errmsg(database);}
75 inline int numChanges(){return sqlite3_changes(database);}
76
77 friend class Statement;
78
79private:
80 const char* dbfile;
81 sqlite3 *database;
82};
83
85{
86public:
87 Statement(SQLiteDB* db) : stmt(NULL), database(db->database) {}
88 ~Statement(){finalize();}
89
90 void prepare(const char *sql);
91 void step();
92 bool nextResult();
93 void bindInt(int idx, int x);
94 void bindInt64(int idx, uint64_t x);
95 void bindDouble(int idx, double d);
96 void bindText(int idx, const char* text);
97
98 inline void reset(){sqlite3_reset(stmt);}
99 inline void finalize(){sqlite3_finalize(stmt);}
100 inline int numCols(){return sqlite3_column_count(stmt);}
101 inline int intColumn(int colNum){return sqlite3_column_int(stmt,colNum);}
102 inline bool boolColumn(int colNum){return sqlite3_column_int(stmt,colNum) != 0;}
103 inline uint64_t int64Column(int colNum){return (uint64_t)sqlite3_column_int64(stmt,colNum);}
104 inline double doubleColumn(int colNum){return sqlite3_column_double(stmt,colNum);}
105 inline char* textColumn(int colNum){return (char*)sqlite3_column_text(stmt,colNum);}
106 inline const char* error(){return sqlite3_errmsg(database);}
107
108private:
109 sqlite3_stmt *stmt;
110 sqlite3 *database;
111};
112
113#endif
114
Definition sqliteDB.hh:42
Definition sqliteDB.hh:85