2 * Copyright (C) 2004, Leo Seib, Hannover
4 * Project:SQLiteDataset C++ Dynamic Library
5 * Module: SQLiteDataset class header file
6 * Author: Leo Seib E-Mail: leoseib@web.de
9 * SPDX-License-Identifier: MIT
10 * See LICENSES/README.md for more information.
23 /***************** Class SqliteDatabase definition ******************
25 class 'SqliteDatabase' connects with Sqlite-server
27 ******************************************************************/
28 class SqliteDatabase
: public Database
31 /* connect descriptor */
37 /* default constructor */
40 ~SqliteDatabase() override
;
42 Dataset
* CreateDataset() const override
;
44 /* func. returns connection handle with SQLite-server */
45 sqlite3
* getHandle() { return conn
; }
46 /* func. returns current status about SQLite-server connection */
47 int status() override
;
48 int setErr(int err_code
, const char* qry
) override
;
49 /* func. returns error message if error occurs */
50 const char* getErrorMsg() override
;
51 /* sets a new host name */
52 void setHostName(const char* newHost
) override
;
53 /* sets a database name */
54 void setDatabase(const char* newDb
) override
;
56 /* func. connects to database-server */
58 int connect(bool create
) override
;
59 /* func. disconnects from database-server */
60 void disconnect() override
;
61 /* func. creates new database */
62 int create() override
;
63 /* func. deletes database */
65 /* check if database exists (ie has tables/views defined) */
66 bool exists() override
;
68 /* \brief copy database */
69 int copy(const char* backup_name
) override
;
71 /* \brief drop all extra analytics from database */
72 int drop_analytics(void) override
;
74 long nextid(const char* seq_name
) override
;
76 /* virtual methods for transaction */
78 void start_transaction() override
;
79 void commit_transaction() override
;
80 void rollback_transaction() override
;
82 /* virtual methods for formatting */
83 std::string
vprepare(const char* format
, va_list args
) override
;
85 bool in_transaction() override
{ return _in_transaction
; }
88 /***************** Class SqliteDataset definition *******************
90 class 'SqliteDataset' does a query to SQLite-server
92 ******************************************************************/
94 class SqliteDataset
: public Dataset
99 /* Makes direct queries to database */
100 virtual void make_query(StringList
& _sql
);
101 /* Makes direct inserts into database */
102 void make_insert() override
;
104 void make_edit() override
;
106 void make_deletion() override
;
108 //static int sqlite_callback(void* res_ptr,int ncol, char** result, char** cols);
110 /* This function works only with MySQL database
111 Filling the fields information from select statement */
112 void fill_fields() override
;
113 /* Changing field values during dataset navigation */
114 virtual void free_row(); // free the memory allocated for the current row
119 explicit SqliteDataset(SqliteDatabase
* newDb
);
122 ~SqliteDataset() override
;
124 /* set autorefresh boolean value (if true - refresh the data after edit()
125 or insert() operations default = false) */
126 void set_autorefresh(bool val
);
128 /* opens a query & then sets a query results */
129 void open() override
;
130 void open(const std::string
& sql
) override
;
131 /* func. executes a query without results to return */
133 int exec(const std::string
& sql
) override
;
134 const void* getExecRes() override
;
135 /* as open, but with our query exec Sql */
136 bool query(const std::string
& query
) override
;
137 /* func. closes a query */
138 void close(void) override
;
139 /* Cancel changes, made in insert or edit states of dataset */
140 void cancel() override
;
141 /* last inserted id */
142 int64_t lastinsertid() override
;
143 /* sequence numbers */
144 long nextid(const char* seq_name
) override
;
145 /* sequence numbers */
146 int num_rows() override
;
147 /* interrupt any pending database operation */
148 void interrupt() override
;
152 void first() override
;
153 void last() override
;
154 void prev() override
;
155 void next() override
;
156 /* Go to record No (starting with 0) */
157 bool seek(int pos
= 0) override
;
159 bool dropIndex(const char* table
, const char* index
) override
;
161 } // namespace dbiplus