annotate include/wx/wxsqlite3.h @ 24:cbdfda601609 default tip

myframe layout finished.
author pyon@macmini
date Thu, 28 Jul 2011 23:04:36 +0900
parents c174ac668e9f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1 ///////////////////////////////////////////////////////////////////////////////
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2 // Name: wxsqlite3.h
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
3 // Purpose: wxWidgets wrapper around the SQLite3 embedded database library.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
4 // Author: Ulrich Telle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
5 // Modified by:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
6 // Created: 2005-07-14
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
7 // Copyright: (c) Ulrich Telle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
8 // Licence: wxWindows licence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
9 ///////////////////////////////////////////////////////////////////////////////
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
10
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
11 /// \file wxsqlite3.h Interface of the wxSQLite3 class
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
12
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
13 #ifndef _WX_SQLITE3_H_
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
14 #define _WX_SQLITE3_H_
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
15
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
16 #if defined(__GNUG__) && !defined(__APPLE__)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
17 #pragma interface "wxsqlite3.h"
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
18 #endif
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
19
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
20 #include <wx/arrstr.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
21 #include <wx/datetime.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
22 #include <wx/buffer.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
23 #include <wx/hashmap.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
24 #include <wx/regex.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
25 #include <wx/string.h>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
26
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
27 #include "wx/wxsqlite3def.h"
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
28
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
29 #define WXSQLITE_ERROR 1000
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
30
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
31 #define WXSQLITE_INTEGER 1
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
32 #define WXSQLITE_FLOAT 2
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
33 #define WXSQLITE_TEXT 3
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
34 #define WXSQLITE_BLOB 4
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
35 #define WXSQLITE_NULL 5
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
36
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
37 #if defined(_MSC_VER) || defined(__BORLANDC__)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
38 typedef __int64 wxsqlite_int64;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
39 #else
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
40 typedef long long int wxsqlite_int64;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
41 #endif
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
42
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
43 /// Enumeration of transaction types
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
44 enum wxSQLite3TransactionType
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
45 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
46 WXSQLITE_TRANSACTION_DEFAULT,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
47 WXSQLITE_TRANSACTION_DEFERRED,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
48 WXSQLITE_TRANSACTION_IMMEDIATE,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
49 WXSQLITE_TRANSACTION_EXCLUSIVE
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
50 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
51
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
52 /// Enumeration of SQLite limitation types
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
53 enum wxSQLite3LimitType
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
54 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
55 WXSQLITE_LIMIT_LENGTH = 0,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
56 WXSQLITE_LIMIT_SQL_LENGTH = 1,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
57 WXSQLITE_LIMIT_COLUMN = 2,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
58 WXSQLITE_LIMIT_EXPR_DEPTH = 3,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
59 WXSQLITE_LIMIT_COMPOUND_SELECT = 4,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
60 WXSQLITE_LIMIT_VDBE_OP = 5,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
61 WXSQLITE_LIMIT_FUNCTION_ARG = 6,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
62 WXSQLITE_LIMIT_ATTACHED = 7,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
63 WXSQLITE_LIMIT_LIKE_PATTERN_LENGTH = 8,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
64 WXSQLITE_LIMIT_VARIABLE_NUMBER = 9,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
65 WXSQLITE_LIMIT_TRIGGER_DEPTH = 10
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
66 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
67
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
68 /// Enumeration of journal modes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
69 enum wxSQLite3JournalMode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
70 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
71 WXSQLITE_JOURNALMODE_DELETE = 0, // Commit by deleting journal file
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
72 WXSQLITE_JOURNALMODE_PERSIST = 1, // Commit by zeroing journal header
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
73 WXSQLITE_JOURNALMODE_OFF = 2, // Journal omitted.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
74 WXSQLITE_JOURNALMODE_TRUNCATE = 3, // Commit by truncating journal
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
75 WXSQLITE_JOURNALMODE_MEMORY = 4, // In-memory journal file
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
76 WXSQLITE_JOURNALMODE_WAL = 5 // Use write-ahead logging
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
77 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
78
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
79 #define WXSQLITE_OPEN_READONLY 0x00000001
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
80 #define WXSQLITE_OPEN_READWRITE 0x00000002
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
81 #define WXSQLITE_OPEN_CREATE 0x00000004
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
82 #define WXSQLITE_OPEN_NOMUTEX 0x00008000
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
83 #define WXSQLITE_OPEN_FULLMUTEX 0x00010000
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
84 #define WXSQLITE_OPEN_SHAREDCACHE 0x00020000
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
85 #define WXSQLITE_OPEN_PRIVATECACHE 0x00040000
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
86
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
87 inline void operator++(wxSQLite3LimitType& value)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
88 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
89 value = wxSQLite3LimitType(value+1);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
90 }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
91
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
92 /// SQL exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
93 class WXDLLIMPEXP_SQLITE3 wxSQLite3Exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
94 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
95 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
96 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
97 wxSQLite3Exception(int errorCode, const wxString& errMsg);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
98
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
99 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
100 wxSQLite3Exception(const wxSQLite3Exception& e);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
101
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
102 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
103 virtual ~wxSQLite3Exception();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
104
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
105 /// Get error code associated with the exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
106 int GetErrorCode() const { return (m_errorCode & 0xff); }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
107
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
108 /// Get extended error code associated with the exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
109 int GetExtendedErrorCode() const { return m_errorCode; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
110
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
111 /// Get error message associated with the exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
112 const wxString GetMessage() const { return m_errorMessage; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
113
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
114 /// Convert error code to error message
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
115 static const wxString ErrorCodeAsString(int errorCode);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
116
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
117 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
118 int m_errorCode; ///< SQLite3 error code associated with this exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
119 wxString m_errorMessage; ///< SQLite3 error message associated with this exception
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
120 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
121
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
122 /// SQL statment buffer for use with SQLite3's printf method
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
123 class WXDLLIMPEXP_SQLITE3 wxSQLite3StatementBuffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
124 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
125 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
126 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
127 wxSQLite3StatementBuffer();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
128
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
129 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
130 ~wxSQLite3StatementBuffer();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
131
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
132 /// Format a SQL statement using SQLite3's printf method
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
133 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
134 * This method is a variant of the "sprintf()" from the standard C library.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
135 * All of the usual printf formatting options apply. In addition,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
136 * there is a "%q" option. %q works like %s in that it substitutes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
137 * a null-terminated string from the argument list. But %q also
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
138 * doubles every '\'' character. %q is designed for use inside a
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
139 * string literal. By doubling each '\'' character it escapes that
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
140 * character and allows it to be inserted into the string.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
141 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
142 * For example, so some string variable contains text as follows:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
143 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
144 * char *zText = "It's a happy day!";
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
145 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
146 * One can use this text in an SQL statement as follows:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
147 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
148 * wxSQLite3StatementBuffer stmtBuffer;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
149 * stmtBuffer.Format("INSERT INTO table VALUES('%q')", zText);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
150 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
151 * Because the %q format string is used, the '\'' character in
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
152 * zText is escaped and the SQL generated is as follows:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
153 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
154 * INSERT INTO table1 VALUES('It''s a happy day!')
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
155 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
156 * \param format SQL statement string with formatting options
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
157 * \param ... list of statement parameters
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
158 * \return const char pointer to the resulting statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
159 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
160 const char* Format(const char* format, ...);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
161
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
162 /// Format a SQL statement using SQLite3's printf method
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
163 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
164 * This method is like method Format but takes a va_list argument
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
165 * to pass the statement parameters.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
166 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
167 * \param format SQL statement string with formatting options
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
168 * \param va va_list of statement parameters
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
169 * \return const char pointer to the resulting statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
170 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
171 const char* FormatV(const char* format, va_list va);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
172
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
173 /// Dereference the internal buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
174 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
175 * \return const char pointer to the resulting statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
176 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
177 operator const char*() const { return m_buffer; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
178
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
179 /// Clear the internal buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
180 void Clear();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
181
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
182 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
183 char* m_buffer; ///< Internal buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
184 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
185
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
186 /// Context for user defined scalar or aggregate functions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
187 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
188 * A function context gives user defined scalar or aggregate functions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
189 * access to function arguments and function results. The "Execute" method
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
190 * resp. the "Aggregate" and "Finalize" methods receive the current
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
191 * function context as an argument.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
192 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
193 class WXDLLIMPEXP_SQLITE3 wxSQLite3FunctionContext
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
194 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
195 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
196 /// Get the number of function arguments
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
197 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
198 * \return the number of arguments the function was called with
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
199 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
200 int GetArgCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
201
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
202 /// Get the type of a function argument
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
203 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
204 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
205 * \return argument type as one of the values WXSQLITE_INTEGER, WXSQLITE_FLOAT, WXSQLITE_TEXT, WXSQLITE_BLOB, or WXSQLITE_NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
206 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
207 int GetArgType(int argIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
208
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
209 /// Check whether a function argument is a NULL value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
210 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
211 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
212 * \return TRUE if the argument is NULL or the argIndex is out of bounds, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
213 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
214 bool IsNull(int argIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
215
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
216 /// Get a function argument as an integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
217 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
218 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
219 * \param nullValue value to be returned in case the argument is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
220 * \return argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
221 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
222 int GetInt(int argIndex, int nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
223
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
224 /// Get a function argument as an 64-bit integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
225 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
226 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
227 * \param nullValue value to be returned in case the argument is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
228 * \return argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
229 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
230 wxLongLong GetInt64(int argIndex, wxLongLong nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
231
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
232 /// Get a function argument as a double value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
233 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
234 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
235 * \param nullValue value to be returned in case the argument is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
236 * \return argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
237 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
238 double GetDouble(int argIndex, double nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
239
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
240 /// Get a function argument as a string value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
241 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
242 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
243 * \param nullValue value to be returned in case the argument is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
244 * \return argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
245 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
246 wxString GetString(int argIndex, const wxString& nullValue = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
247
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
248 /// Get a function argument as a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
249 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
250 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
251 * \param[out] len length of the blob argument in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
252 * \return argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
253 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
254 const unsigned char* GetBlob(int argIndex, int& len);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
255
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
256 /// Get a function argument as a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
257 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
258 * \param argIndex index of the function argument. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
259 * \param[out] buffer to which the blob argument value is appended
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
260 * \return reference to argument value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
261 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
262 wxMemoryBuffer& GetBlob(int argIndex, wxMemoryBuffer& buffer);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
263
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
264 /// Set the function result as an integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
265 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
266 * \param value function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
267 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
268 void SetResult(int value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
269
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
270 /// Set the function result as an 64-bit integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
271 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
272 * \param value function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
273 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
274 void SetResult(wxLongLong value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
275
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
276 /// Set the function result as a double value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
277 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
278 * \param value function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
279 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
280 void SetResult(double value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
281
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
282 /// Set the function result as a string value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
283 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
284 * \param value function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
285 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
286 void SetResult(const wxString& value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
287
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
288 /// Set the function result as a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
289 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
290 * \param value function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
291 * \param len length of the result blob in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
292 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
293 void SetResult(unsigned char* value, int len);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
294
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
295 /// Set the function result as a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
296 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
297 * \param buffer containing the function result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
298 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
299 void SetResult(const wxMemoryBuffer& buffer);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
300
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
301 /// Set the function result as a NULL value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
302 void SetResultNull();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
303
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
304 /// Set the function result as a zero BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
305 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
306 * \param blobSize size of the zero filled BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
307 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
308 void SetResultZeroBlob(int blobSize);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
309
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
310 /// Set the function result as a exact copy of a function argument
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
311 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
312 * \param argIndex index of the argument which should be copied as the result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
313 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
314 void SetResultArg(int argIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
315
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
316 /// Set an error message as the function result
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
317 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
318 * \param errmsg string containing an error message
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
319 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
320 void SetResultError(const wxString& errmsg);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
321
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
322 /// Get the number of aggregate steps
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
323 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
324 * \return the number of aggregation steps. The current aggregation step counts so at least 1 is returned.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
325 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
326 int GetAggregateCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
327
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
328 /// Get a pointer to an aggregate structure of specified length
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
329 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
330 * Usually an aggregation functions needs temporary memory to collect
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
331 * the information gathered from each invocation of the "Aggregate" method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
332 * On the first invocation of this method the returned memory contains
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
333 * binary zeros.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
334 * If this memory is used to store pointers to allocated objects,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
335 * it is important to free all allocated objects in the "Finalize" method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
336 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
337 * \param len amount of memory needed in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
338 * \return pointer to the allocated memory
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
339 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
340 void* GetAggregateStruct(int len);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
341
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
342 /// Execute a user defined scalar function (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
343 static void ExecScalarFunction(void* ctx, int argc, void** argv);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
344
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
345 /// Execute an aggregate step of a user defined aggregate function (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
346 static void ExecAggregateStep(void* ctx, int argc, void** argv);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
347
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
348 /// Execute the final step of a user defined aggregate function (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
349 static void ExecAggregateFinalize(void* ctx);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
350
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
351 /// Execute the user defined authorizer function (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
352 static int ExecAuthorizer(void*, int type,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
353 const char* arg1, const char* arg2,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
354 const char* arg3, const char* arg4);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
355
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
356 /// Execute the user defined commit hook (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
357 static int ExecCommitHook(void* hook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
358
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
359 /// Execute the user defined rollback hook (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
360 static void ExecRollbackHook(void* hook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
361
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
362 /// Execute the user defined update hook (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
363 static void ExecUpdateHook(void* hook, int type,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
364 const char* database, const char* table,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
365 wxsqlite_int64 rowid);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
366
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
367 /// Execute the user defined Write Ahead Log hook (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
368 static int ExecWriteAheadLogHook(void* hook, void* dbHandle,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
369 const char* database, int numPages);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
370
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
371 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
372 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
373 wxSQLite3FunctionContext(void* ctx, bool isAggregate, int argc = 0, void** argv = NULL);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
374
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
375 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
376 wxSQLite3FunctionContext(wxSQLite3FunctionContext& ctx);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
377
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
378 void* m_ctx; ///< SQLite3 context
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
379 bool m_isAggregate; ///< Flag whether this is the context of an aggregate function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
380 int m_count; ///< Aggregate count
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
381 int m_argc; ///< Number of arguments
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
382 void** m_argv; ///< Array of SQLite3 arguments
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
383 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
384
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
385
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
386 /// Interface for user defined scalar functions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
387 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
388 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
389 class WXDLLIMPEXP_SQLITE3 wxSQLite3ScalarFunction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
390 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
391 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
392 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
393 wxSQLite3ScalarFunction() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
394
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
395 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
396 virtual ~wxSQLite3ScalarFunction() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
397 /// Execute the scalar function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
398 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
399 * This method is invoked for each appearance of the scalar function in the SQL query.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
400 * \param ctx function context which can be used to access arguments and result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
401 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
402 virtual void Execute(wxSQLite3FunctionContext& ctx) = 0;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
403 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
404
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
405
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
406 /// Interface for user defined aggregate functions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
407 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
408 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
409 class WXDLLIMPEXP_SQLITE3 wxSQLite3AggregateFunction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
410 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
411 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
412 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
413 wxSQLite3AggregateFunction() { m_count = 0; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
414
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
415 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
416 virtual ~wxSQLite3AggregateFunction() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
417 /// Execute the aggregate of the function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
418 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
419 * This method is invoked for each row of the result set of the query using the aggregate function.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
420 * \param ctx function context which can be used to access arguments and result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
421 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
422 virtual void Aggregate(wxSQLite3FunctionContext& ctx) = 0;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
423
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
424 /// Prepare the result of the aggregate function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
425 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
426 * This method is invoked after all rows of the result set of the query
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
427 * using the aggregate function have been processed. Usually the final result
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
428 * is calculated and returned in this method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
429 * \param ctx function context which can be used to access arguments and result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
430 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
431 virtual void Finalize(wxSQLite3FunctionContext& ctx) = 0;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
432
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
433 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
434 int m_count; ///< Aggregate count
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
435 friend class wxSQLite3FunctionContext;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
436 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
437
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
438
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
439 /// Interface for a user defined authorizer function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
440 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
441 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
442 class WXDLLIMPEXP_SQLITE3 wxSQLite3Authorizer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
443 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
444 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
445 /// Codes identifying the command for which authorization is requested
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
446 enum wxAuthorizationCode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
447 { // arg1 = arg2 =
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
448 SQLITE_COPY = 0, // Table Name File Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
449 SQLITE_CREATE_INDEX = 1, // Index Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
450 SQLITE_CREATE_TABLE = 2, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
451 SQLITE_CREATE_TEMP_INDEX = 3, // Index Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
452 SQLITE_CREATE_TEMP_TABLE = 4, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
453 SQLITE_CREATE_TEMP_TRIGGER = 5, // Trigger Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
454 SQLITE_CREATE_TEMP_VIEW = 6, // View Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
455 SQLITE_CREATE_TRIGGER = 7, // Trigger Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
456 SQLITE_CREATE_VIEW = 8, // View Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
457 SQLITE_DELETE = 9, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
458 SQLITE_DROP_INDEX = 10, // Index Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
459 SQLITE_DROP_TABLE = 11, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
460 SQLITE_DROP_TEMP_INDEX = 12, // Index Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
461 SQLITE_DROP_TEMP_TABLE = 13, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
462 SQLITE_DROP_TEMP_TRIGGER = 14, // Trigger Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
463 SQLITE_DROP_TEMP_VIEW = 15, // View Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
464 SQLITE_DROP_TRIGGER = 16, // Trigger Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
465 SQLITE_DROP_VIEW = 17, // View Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
466 SQLITE_INSERT = 18, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
467 SQLITE_PRAGMA = 19, // Pragma Name 1st arg or NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
468 SQLITE_READ = 20, // Table Name Column Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
469 SQLITE_SELECT = 21, // NULL NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
470 SQLITE_TRANSACTION = 22, // Operation NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
471 SQLITE_UPDATE = 23, // Table Name Column Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
472 SQLITE_ATTACH = 24, // Filename NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
473 SQLITE_DETACH = 25, // Database Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
474 SQLITE_ALTER_TABLE = 26, // Database Name Table Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
475 SQLITE_REINDEX = 27, // Index Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
476 SQLITE_ANALYZE = 28, // Table Name NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
477 SQLITE_CREATE_VTABLE = 29, // Table Name Module Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
478 SQLITE_DROP_VTABLE = 30, // Table Name Module Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
479 SQLITE_FUNCTION = 31, // NULL Function Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
480 SQLITE_SAVEPOINT = 32, // Operation Savepoint Name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
481 SQLITE_MAX_CODE = SQLITE_SAVEPOINT
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
482 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
483
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
484 /// Return codes of the authorizer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
485 enum wxAuthorizationResult
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
486 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
487 SQLITE_OK = 0, // Allow access
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
488 SQLITE_DENY = 1, // Abort the SQL statement with an error
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
489 SQLITE_IGNORE = 2 // Don't allow access, but don't generate an error
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
490 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
491 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
492 virtual ~wxSQLite3Authorizer() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
493 /// Execute the authorizer function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
494 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
495 * Please refer to the SQLite documentation for further information about the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
496 * meaning of the parameters.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
497 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
498 * \param type wxAuthorizationCode. The value signifies what kind of operation is to be authorized.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
499 * \param arg1 first argument (value depends on "type")
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
500 * \param arg2 second argument (value depends on "type")
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
501 * \param arg3 third argument (name of database if applicable)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
502 * \param arg4 fourth argument (name of trigger or view if applicable)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
503 * \return a wxAuthorizationResult, i.e. SQLITE_OK, SQLITE_DENY or SQLITE_IGNORE
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
504 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
505 virtual wxAuthorizationResult Authorize(wxAuthorizationCode type,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
506 const wxString& arg1, const wxString& arg2,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
507 const wxString& arg3, const wxString& arg4) = 0;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
508 /// Convert authorization code to string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
509 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
510 * \param type wxAuthorizationCode. The value signifies what kind of operation is to be authorized.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
511 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
512 static wxString AuthorizationCodeToString(wxSQLite3Authorizer::wxAuthorizationCode type);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
513 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
514
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
515 class WXDLLIMPEXP_FWD_SQLITE3 wxSQLite3Database;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
516
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
517 /// Interface for a user defined hook function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
518 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
519 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
520 class WXDLLIMPEXP_SQLITE3 wxSQLite3Hook
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
521 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
522 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
523 /// Codes identifying the command for which the hook is called
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
524 enum wxUpdateType
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
525 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
526 SQLITE_DELETE = 9,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
527 SQLITE_INSERT = 18,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
528 SQLITE_UPDATE = 23
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
529 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
530 /// Default constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
531 wxSQLite3Hook() : m_db(NULL) {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
532
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
533 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
534 virtual ~wxSQLite3Hook() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
535
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
536 /// Execute the commit hook callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
537 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
538 * Please refer to the SQLite documentation for further information.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
539 * \return true to request rollback of the transaction, false to continue with commit
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
540 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
541 virtual bool CommitCallback() { return false; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
542
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
543 /// Execute the rollback hook callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
544 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
545 * Please refer to the SQLite documentation for further information.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
546 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
547 virtual void RollbackCallback() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
548
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
549 /// Execute the hook callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
550 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
551 * Please refer to the SQLite documentation for further information about the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
552 * meaning of the parameters.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
553 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
554 * \param type wxHookType. The value signifies what kind of operation is to be authorized.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
555 * \param database Name of the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
556 * \param table Name of the table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
557 * \param rowid The rowid of the affected row
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
558 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
559 virtual void UpdateCallback(wxUpdateType WXUNUSED(type),
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
560 const wxString& WXUNUSED(database), const wxString& WXUNUSED(table),
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
561 wxLongLong WXUNUSED(rowid)) {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
562
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
563 /// Execute the write-ahead log hook callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
564 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
565 * Please refer to the SQLite documentation for further information about the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
566 * meaning of the parameters.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
567 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
568 * \param database Name of the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
569 * \param numPages the number of pages
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
570 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
571 virtual int WriteAheadLogCallback(const wxString& WXUNUSED(database),
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
572 int WXUNUSED(numPages)) { return 0; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
573
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
574 /// Set the associated database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
575 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
576 * For the write-ahead log hook the associated database is set internally.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
577 * \param db pointer to the associated database instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
578 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
579 void SetDatabase(wxSQLite3Database* db) { m_db = db; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
580
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
581 /// Get the associated database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
582 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
583 * For the write-ahead log hook the associated database can be accessed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
584 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
585 * \return pointer to the associated database instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
586 * \note Access to the associated database is only provided for write-ahead log hooks.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
587 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
588 wxSQLite3Database* GetDatabase() const { return m_db; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
589
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
590 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
591 wxSQLite3Database* m_db;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
592 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
593
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
594 /// Interface for a user defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
595 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
596 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
597 class WXDLLIMPEXP_SQLITE3 wxSQLite3Collation
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
598 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
599 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
600 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
601 virtual ~wxSQLite3Collation() {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
602
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
603 /// Execute a comparison using a user-defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
604 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
605 * Please refer to the SQLite documentation for further information.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
606 * \param text1 first text string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
607 * \param text2 second text string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
608 * \return an integer < 0, = 0, or > 0 depending on whether text1 is less than, equal to, or greater than text2.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
609 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
610 virtual int Compare(const wxString& text1, const wxString& text2) { return text1.Cmp(text2); }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
611 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
612
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
613 /// Result set of a SQL query
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
614 class WXDLLIMPEXP_SQLITE3 wxSQLite3ResultSet
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
615 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
616 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
617 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
618 wxSQLite3ResultSet();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
619
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
620 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
621 wxSQLite3ResultSet(const wxSQLite3ResultSet& resultSet);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
622
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
623 /// Constructor for internal use
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
624 wxSQLite3ResultSet(void* db, void* stmt,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
625 bool eof, bool first = true, bool ownStmt = true);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
626
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
627 /// Assignment constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
628 wxSQLite3ResultSet& operator=(const wxSQLite3ResultSet& resultSet);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
629
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
630 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
631 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
632 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
633 virtual ~wxSQLite3ResultSet();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
634
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
635 /// Get the number of columns in the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
636 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
637 * \return number of columns in result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
638 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
639 int GetColumnCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
640
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
641 /// Find the index of a column by name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
642 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
643 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
644 * \return index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
645 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
646 int FindColumnIndex(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
647
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
648 /// Get the name of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
649 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
650 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
651 * \return column name as string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
652 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
653 wxString GetColumnName(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
654
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
655 /// Get the declared type of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
656 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
657 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
658 * \return type string as specified in the table definition
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
659 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
660 wxString GetDeclaredColumnType(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
661
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
662 /// Get the actual type of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
663 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
664 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
665 * \return column type as one of the values WXSQLITE_INTEGER, WXSQLITE_FLOAT, WXSQLITE_TEXT, WXSQLITE_BLOB, or WXSQLITE_NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
666 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
667 int GetColumnType(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
668
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
669 /// Get the database name of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
670 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
671 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
672 * \return database name the column belongs to or empty string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
673 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
674 * This method is only available if WXSQLITE3_HAVE_METADATA is defined and SQLite has been compiled with SQLITE_ENABLE_COLUMN_METADATA defined.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
675 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
676 wxString GetDatabaseName(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
677
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
678 /// Get the table name of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
679 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
680 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
681 * \return table name the column belongs to or empty string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
682 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
683 * This method is only available if WXSQLITE3_HAVE_METADATA is defined and SQLite has been compiled with SQLITE_ENABLE_COLUMN_METADATA defined.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
684 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
685 wxString GetTableName(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
686
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
687 /// Get the origin name of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
688 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
689 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
690 * \return origin name the column belongs to or empty string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
691 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
692 * This method is only available if WXSQLITE3_HAVE_METADATA is defined and SQLite has been compiled with SQLITE_ENABLE_COLUMN_METADATA defined.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
693 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
694 wxString GetOriginName(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
695
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
696 /// Get a column as a string using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
697 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
698 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
699 * \return value of the column as string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
700 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
701 wxString GetAsString(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
702
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
703 /// Get a column as a string using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
704 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
705 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
706 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
707 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
708 wxString GetAsString(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
709
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
710 /// Get a column as an integer using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
711 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
712 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
713 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
714 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
715 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
716 int GetInt(int columnIndex, int nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
717
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
718 /// Get a column as an integer using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
719 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
720 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
721 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
722 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
723 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
724 int GetInt(const wxString& columnName, int nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
725
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
726 /// Get a column as a 64-bit integer using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
727 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
728 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
729 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
730 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
731 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
732 wxLongLong GetInt64(int columnIndex, wxLongLong nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
733
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
734 /// Get a column as a 64-bit integer using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
735 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
736 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
737 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
738 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
739 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
740 wxLongLong GetInt64(const wxString& columnName, wxLongLong nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
741
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
742 /// Get a column as a double using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
743 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
744 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
745 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
746 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
747 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
748 double GetDouble(int columnIndex, double nullValue = 0.0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
749
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
750 /// Get a column as a double using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
751 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
752 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
753 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
754 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
755 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
756 double GetDouble(const wxString& columnName, double nullValue = 0.0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
757
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
758 /// Get a column as a string using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
759 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
760 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
761 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
762 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
763 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
764 wxString GetString(int columnIndex, const wxString& nullValue = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
765
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
766 /// Get a column as a string using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
767 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
768 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
769 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
770 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
771 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
772 wxString GetString(const wxString& columnName, const wxString& nullValue = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
773
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
774 /// Get a column as a BLOB using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
775 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
776 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
777 * \param[out] len length of the blob in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
778 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
779 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
780 const unsigned char* GetBlob(int columnIndex, int& len);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
781
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
782 /// Get a column as a BLOB using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
783 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
784 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
785 * \param[out] len length of the blob in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
786 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
787 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
788 const unsigned char* GetBlob(const wxString& columnName, int& len);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
789
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
790 /// Get a column as a BLOB using the column index and append to memory buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
791 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
792 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
793 * \param[out] buffer the memory buffer to which the BLOB value is appended
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
794 * \return reference to the memory buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
795 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
796 wxMemoryBuffer& GetBlob(int columnIndex, wxMemoryBuffer& buffer);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
797
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
798 /// Get a column as a BLOB using the column index and append to memory buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
799 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
800 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
801 * \param[out] buffer the memory buffer to which the BLOB value is appended
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
802 * \return reference to the memory buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
803 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
804 wxMemoryBuffer& GetBlob(const wxString& columnName, wxMemoryBuffer& buffer);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
805
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
806 /// Get a column as a date value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
807 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
808 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
809 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
810 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
811 wxDateTime GetDate(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
812
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
813 /// Get a column as a date value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
814 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
815 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
816 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
817 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
818 wxDateTime GetDate(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
819
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
820 /// Get a column as a time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
821 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
822 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
823 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
824 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
825 wxDateTime GetTime(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
826
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
827 /// Get a column as a time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
828 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
829 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
830 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
831 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
832 wxDateTime GetTime(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
833
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
834 /// Get a column as a date and time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
835 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
836 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
837 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
838 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
839 wxDateTime GetDateTime(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
840
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
841 /// Get a column as a date and time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
842 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
843 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
844 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
845 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
846 wxDateTime GetDateTime(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
847
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
848 /// Get a column as a timestamp value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
849 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
850 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
851 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
852 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
853 wxDateTime GetTimestamp(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
854
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
855 /// Get a column as a timestamp value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
856 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
857 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
858 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
859 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
860 wxDateTime GetTimestamp(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
861
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
862 /// Get a column as a date and time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
863 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
864 * The date/time value is expected to be stored in the database as a numeric value (i.e. int64).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
865 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
866 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
867 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
868 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
869 wxDateTime GetNumericDateTime(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
870
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
871 /// Get a column as a date and time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
872 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
873 * The date/time value is expected to be stored in the database as a numeric value (i.e. int64).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
874 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
875 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
876 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
877 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
878 wxDateTime GetNumericDateTime(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
879
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
880 /// Get a column as a date and time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
881 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
882 * The date/time value is expected to be stored in the database as a Julian Day Number (i.e. double).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
883 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
884 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
885 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
886 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
887 wxDateTime GetJulianDayNumber(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
888
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
889 /// Get a column as a date and time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
890 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
891 * The date/time value is expected to be stored in the database as a Julian Day Number (i.e. double).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
892 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
893 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
894 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
895 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
896 wxDateTime GetJulianDayNumber(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
897
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
898 /// Get a column as a boolean value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
899 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
900 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
901 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
902 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
903 bool GetBool(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
904
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
905 /// Get a column as a boolean value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
906 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
907 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
908 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
909 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
910 bool GetBool(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
911
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
912 /// Check whether a column has a NULL value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
913 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
914 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
915 * \return TRUE if the value is NULL, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
916 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
917 bool IsNull(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
918
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
919 /// Check whether a column has a NULL value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
920 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
921 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
922 * \return TRUE if the value is NULL, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
923 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
924 bool IsNull(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
925
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
926 /// Check whether all rows of the result set have been processed
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
927 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
928 * \return TRUE if all rows of the result have been processed, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
929 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
930 bool Eof();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
931
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
932 /// Retrieve next row of the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
933 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
934 * Advances the cursor to the next row.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
935 * On creation of the result set the cursor is positioned BEFORE the first row, i.e.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
936 * the first call to this method makes the first row available for processing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
937 * \return TRUE while there are still rows to process, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
938 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
939 bool NextRow();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
940
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
941 /// Finalize the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
942 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
943 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
944 void Finalize();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
945
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
946 /// Get the original SQL string for preparing the query statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
947 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
948 * \return the original SQL string used to prepare the query statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
949 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
950 wxString GetSQL();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
951
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
952 /// Validate associated SQLite database and statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
953 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
954 * \return TRUE if both, a SQLite database and a SQLite statement, are associated, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
955 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
956 bool IsOk();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
957
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
958 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
959 /// Check the validity of the associated statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
960 void CheckStmt();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
961
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
962 void* m_db; ///< associated database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
963 void* m_stmt; ///< associated statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
964 bool m_eof; ///< Flag for end of result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
965 bool m_first; ///< Flag for first row of the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
966 int m_cols; ///< Numver of columns in row set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
967 bool m_ownStmt; ///< Flag for ownership of the associated statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
968 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
969
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
970
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
971 /// Holds the complete result set of a SQL query
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
972 class WXDLLIMPEXP_SQLITE3 wxSQLite3Table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
973 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
974 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
975 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
976 wxSQLite3Table();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
977
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
978 wxSQLite3Table(const wxSQLite3Table& table);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
979
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
980 wxSQLite3Table(char** results, int rows, int cols);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
981
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
982 virtual ~wxSQLite3Table();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
983
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
984 wxSQLite3Table& operator=(const wxSQLite3Table& table);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
985
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
986 /// Get the number of columns in the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
987 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
988 * \return the number of columns
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
989 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
990 int GetColumnCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
991
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
992 /// Get the number of rows in the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
993 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
994 * \return the number of rows
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
995 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
996 int GetRowCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
997
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
998 /// Find the index of a column by name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
999 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1000 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1001 * \return the index of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1002 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1003 int FindColumnIndex(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1004
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1005 /// Get the name of a column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1006 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1007 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1008 * \return name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1009 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1010 wxString GetColumnName(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1011
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1012 /// Get a column as a string using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1013 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1014 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1015 * \return value of the column as a string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1016 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1017 * \note This method returns values of type <code>double</code>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1018 * always using the point character as the decimal separator.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1019 * This is SQLite default behaviour. Use method wxSQLite3Table::GetDouble
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1020 * to apply correct conversion from <code>string</code> to <code>double</code>.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1021 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1022 wxString GetAsString(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1023
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1024 /// Get a column as a string using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1025 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1026 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1027 * \return value of the column as a string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1028 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1029 * \note This method returns values of type <code>double</code>
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1030 * always using the point character as the decimal separator.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1031 * This is SQLite default behaviour. Use method wxSQLite3Table::GetDouble
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1032 * to apply correct conversion from <code>string</code> to <code>double</code>.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1033 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1034 wxString GetAsString(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1035
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1036 /// Get a column as an integer using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1037 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1038 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1039 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1040 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1041 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1042 int GetInt(int columnIndex, int nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1043
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1044 /// Get a column as an integer using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1045 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1046 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1047 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1048 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1049 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1050 int GetInt(const wxString& columnName, int nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1051
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1052 /// Get a column as a 64-bit integer using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1053 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1054 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1055 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1056 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1057 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1058 wxLongLong GetInt64(int columnIndex, wxLongLong nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1059
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1060 /// Get a column as an integer using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1061 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1062 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1063 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1064 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1065 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1066 wxLongLong GetInt64(const wxString& columnName, wxLongLong nullValue = 0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1067
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1068 /// Get a column as a double using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1069 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1070 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1071 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1072 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1073 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1074 double GetDouble(int columnIndex, double nullValue = 0.0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1075
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1076 /// Get a column as a double using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1077 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1078 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1079 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1080 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1081 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1082 double GetDouble(const wxString& columnName, double nullValue = 0.0);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1083
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1084 /// Get a column as a string using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1085 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1086 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1087 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1088 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1089 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1090 wxString GetString(int columnIndex, const wxString& nullValue = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1091
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1092 /// Get a column as a string using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1093 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1094 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1095 * \param nullValue value to be returned in case the column is NULL
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1096 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1097 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1098 wxString GetString(const wxString& columnName, const wxString& nullValue = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1099
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1100 /// Get a column as a date value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1101 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1102 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1103 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1104 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1105 wxDateTime GetDate(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1106
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1107 /// Get a column as a date value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1108 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1109 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1110 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1111 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1112 wxDateTime GetDate(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1113
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1114 /// Get a column as a time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1115 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1116 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1117 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1118 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1119 wxDateTime GetTime(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1120
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1121 /// Get a column as a time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1122 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1123 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1124 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1125 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1126 wxDateTime GetTime(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1127
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1128 /// Get a column as a date/time value using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1129 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1130 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1131 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1132 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1133 wxDateTime GetDateTime(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1134
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1135 /// Get a column as a date/time value using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1136 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1137 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1138 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1139 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1140 wxDateTime GetDateTime(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1141
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1142 /// Get a column as a boolean using the column index
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1143 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1144 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1145 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1146 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1147 bool GetBool(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1148
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1149 /// Get a column as a boolean using the column name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1150 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1151 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1152 * \return value of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1153 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1154 bool GetBool(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1155
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1156 /// Check whether the column selected by index is a NULL value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1157 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1158 * \param columnIndex index of the column. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1159 * \return TRUE if the value is NULL, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1160 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1161 bool IsNull(int columnIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1162
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1163 /// Check whether the column selected by name is a NULL value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1164 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1165 * \param columnName name of the column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1166 * \return TRUE if the value is NULL, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1167 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1168 bool IsNull(const wxString& columnName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1169
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1170 /// Set the current row
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1171 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1172 * \param row index of the requested row. Indices start with 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1173 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1174 void SetRow(int row);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1175
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1176 /// Finalize the result set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1177 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1178 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1179 void Finalize();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1180
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1181 /// Validate associated SQLite resultset
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1182 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1183 * \return TRUE if SQLite resultset is associated, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1184 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1185 bool IsOk();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1186
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1187 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1188 /// Check for valid results
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1189 void CheckResults();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1190
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1191 int m_cols; ///< Number of columns
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1192 int m_rows; ///< Number of rows
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1193 int m_currentRow; ///< Index of the current row
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1194 char** m_results; ///< SQLite3 result buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1195 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1196
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1197
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1198 /// Represents a prepared SQL statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1199 class WXDLLIMPEXP_SQLITE3 wxSQLite3Statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1200 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1201 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1202 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1203 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1204 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1205 wxSQLite3Statement();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1206
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1207 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1208 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1209 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1210 wxSQLite3Statement(const wxSQLite3Statement& statement);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1211
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1212 /// Assignement constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1213 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1214 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1215 wxSQLite3Statement& operator=(const wxSQLite3Statement& statement);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1216
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1217 /// Constructor (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1218 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1219 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1220 wxSQLite3Statement(void* db, void* stmt);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1221
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1222 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1223 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1224 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1225 virtual ~wxSQLite3Statement();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1226
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1227 /// Execute the database update represented by this statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1228 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1229 * \return the number of database rows that were changed (or inserted or deleted)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1230 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1231 int ExecuteUpdate();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1232
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1233 /// Execute the query represented by this statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1234 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1235 * \param transferStatementOwnership if TRUE the ownership of the underlying SQLite
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1236 * statement object is transferred to the created result set (default: FALSE)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1237 * \return result set instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1238 * \note the transfer of ownership of the underlying SQLite statement object can be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1239 * performed only once. If the transfer of ownership has been requested this
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1240 * wxSQL3Statement instance isn't usable anymore as soon as the result set is destroyed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1241 * If the transfer of ownership isn't requested the created result set can be used to
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1242 * retrieve the selected data rows only as long as this wxSQLite3Statement instance exists.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1243 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1244 wxSQLite3ResultSet ExecuteQuery(bool transferStatementOwnership = false);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1245
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1246 /// Get the number of statement parameters
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1247 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1248 * \return the number of parameters in the prepared statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1249 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1250 int GetParamCount();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1251
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1252 /// Get the index of a parameter with a given name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1253 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1254 * \param paramName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1255 * \return the index of the parameter with the given name. The name must match exactly.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1256 * If there is no parameter with the given name, return 0.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1257 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1258 int GetParamIndex(const wxString& paramName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1259
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1260 /// Get the name of a paramater at the given position
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1261 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1262 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1263 * \return the name of the paramIndex-th parameter in the precompiled statement.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1264 * Parameters of the form ":AAA" or "$VVV" have a name which is the string ":AAA" or "$VVV".
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1265 * Parameters of the form "?" have no name.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1266 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1267 wxString GetParamName(int paramIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1268
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1269 /// Bind parameter to a string value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1270 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1271 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1272 * \param stringValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1273 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1274 void Bind(int paramIndex, const wxString& stringValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1275
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1276 /// Bind parameter to a integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1277 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1278 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1279 * \param intValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1280 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1281 void Bind(int paramIndex, int intValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1282
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1283 /// Bind parameter to a 64-bit integer value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1284 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1285 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1286 * \param int64Value value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1287 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1288 void Bind(int paramIndex, wxLongLong int64Value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1289
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1290 /// Bind parameter to a double value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1291 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1292 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1293 * \param doubleValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1294 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1295 void Bind(int paramIndex, double doubleValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1296
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1297 /// Bind parameter to a utf-8 character string value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1298 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1299 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1300 * \param charValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1301 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1302 void Bind(int paramIndex, const char* charValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1303
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1304 /// Bind parameter to a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1305 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1306 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1307 * \param blobValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1308 * \param blobLen length of the blob in bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1309 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1310 void Bind(int paramIndex, const unsigned char* blobValue, int blobLen);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1311
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1312 /// Bind parameter to a BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1313 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1314 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1315 * \param blobValue value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1316 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1317 void Bind(int paramIndex, const wxMemoryBuffer& blobValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1318
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1319 /// Bind parameter to a date value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1320 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1321 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1322 * \param date value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1323 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1324 void BindDate(int paramIndex, const wxDateTime& date);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1325
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1326 /// Bind parameter to a time value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1327 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1328 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1329 * \param time value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1330 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1331 void BindTime(int paramIndex, const wxDateTime& time);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1332
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1333 /// Bind parameter to a date and time value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1334 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1335 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1336 * \param datetime value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1337 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1338 void BindDateTime(int paramIndex, const wxDateTime& datetime);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1339
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1340 /// Bind parameter to a timestamp value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1341 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1342 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1343 * \param timestamp value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1344 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1345 void BindTimestamp(int paramIndex, const wxDateTime& timestamp);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1346
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1347 /// Bind parameter to a date and time value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1348 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1349 * The date/time value is transferred to the database as a numeric value (i.e. int64).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1350 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1351 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1352 * \param datetime value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1353 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1354 void BindNumericDateTime(int paramIndex, const wxDateTime& datetime);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1355
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1356 /// Bind parameter to a date and time value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1357 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1358 * The date/time value is transferred to the database as a Julian Day Number value (i.e. double).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1359 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1360 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1361 * \param datetime value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1362 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1363 void BindJulianDayNumber(int paramIndex, const wxDateTime& datetime);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1364
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1365 /// Bind parameter to a boolean value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1366 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1367 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1368 * \param value value of the parameter
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1369 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1370 void BindBool(int paramIndex, bool value);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1371
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1372 /// Bind parameter to a NULL value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1373 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1374 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1375 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1376 void BindNull(int paramIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1377
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1378 /// Bind parameter to a Zero BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1379 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1380 * Space for a BLOB is reserved and filled with binary zeros for later reference
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1381 * through a BLOB handle.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1382 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1383 * \param paramIndex index of the parameter. The first parameter has an index of 1.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1384 * \param blobSize size of the BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1385 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1386 void BindZeroBlob(int paramIndex, int blobSize);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1387
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1388 /// Clear all parameter bindings
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1389 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1390 * Sets all the parameters in the prepared SQL statement back to NULL.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1391 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1392 void ClearBindings();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1393
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1394 /// Get the original SQL string for the prepared statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1395 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1396 * \return the original SQL string used to prepare the statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1397 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1398 wxString GetSQL();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1399
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1400 /// Reset the prepared statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1401 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1402 * Resets the statement back to it's initial state, ready to be re-executed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1403 * Any SQL statement variables that had values bound to them retain their values.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1404 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1405 void Reset();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1406
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1407 /// Determine whether the statement is read-only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1408 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1409 * \return TRUE if the statement is read-only, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1410 * \since SQLite3 version 3.7.4
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1411 * \note For SQLite3 version before version 3.7.4 this method returns always FALSE.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1412 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1413 bool IsReadOnly();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1414
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1415 /// Finalize the prepared statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1416 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1417 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1418 void Finalize();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1419
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1420 /// Validate associated SQLite database and statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1421 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1422 * \return TRUE if both, a SQLite database and a SQLite statement, are associated, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1423 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1424 bool IsOk();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1425
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1426 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1427 /// Check for valid database connection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1428 void CheckDatabase();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1429
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1430 /// Check for valid statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1431 void CheckStmt();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1432
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1433 void* m_db; ///< associated SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1434 void* m_stmt; ///< associated SQLite3 statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1435 bool m_hasOwnership; ///< flag whether the associated SQLite3 statement is owned
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1436 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1437
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1438
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1439 /// Represents a SQLite BLOB handle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1440 class WXDLLIMPEXP_SQLITE3 wxSQLite3Blob
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1441 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1442 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1443 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1444 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1445 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1446 wxSQLite3Blob();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1447
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1448 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1449 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1450 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1451 wxSQLite3Blob(const wxSQLite3Blob& blob);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1452
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1453 /// Assignement constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1454 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1455 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1456 wxSQLite3Blob& operator=(const wxSQLite3Blob& blob);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1457
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1458 /// Constructor (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1459 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1460 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1461 wxSQLite3Blob(void* m_db, void* blobHandle, bool writable);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1462
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1463 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1464 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1465 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1466 virtual ~wxSQLite3Blob();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1467
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1468 /// Read partial BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1469 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1470 * \param blobValue memory buffer receiving the partial content of the BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1471 * \param length length of BLOB content to be read
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1472 * \param offset offset within BLOB where the read starts
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1473 * \return the address of the memory buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1474 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1475 wxMemoryBuffer& Read(wxMemoryBuffer& blobValue, int length, int offset);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1476
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1477 /// Write partial BLOB value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1478 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1479 * \param blobValue memory buffer receiving the partial content of the BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1480 * \param offset offset within BLOB where the read starts
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1481 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1482 void Write(const wxMemoryBuffer& blobValue, int offset);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1483
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1484 /// Check whether the BLOB handle is correctly initialized
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1485 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1486 * \return TRUE if the BLOB handle is correctly initialized, FALSE otherweis
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1487 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1488 bool IsOk();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1489
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1490 /// Check whether the BLOB handle is read only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1491 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1492 * \return TRUE if the BLOB handle is readonly, FALSE otherweis
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1493 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1494 bool IsReadOnly();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1495
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1496 /// Get the size of the associated BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1497 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1498 * \return the BLOB size
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1499 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1500 int GetSize();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1501
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1502 /// Rebind the associated BLOB to a new row
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1503 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1504 * Please refer to the SQLite documentation for further information
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1505 * (see function sqlite3_blob_reopen)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1506 * \param rowid id of the row to which the BLOB should be rebound
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1507 * \since SQLite3 version 3.7.4
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1508 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1509 void Rebind(wxLongLong rowid);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1510
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1511 /// Finalize the BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1512 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1513 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1514 void Finalize();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1515
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1516 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1517 /// Check for valid BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1518 void CheckBlob();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1519
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1520 void* m_db; ///< associated SQLite3 database handle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1521 void* m_blob; ///< associated SQLite3 BLOB handle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1522 bool m_ok; ///< flag whether the BLOB handle is correctly initialized
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1523 bool m_writable; ///< flag whether the BLOB is writable or read only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1524 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1525
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1526 /// Represents a named collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1527 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1528 * A named collection is designed to facilitate using an array of
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1529 * integers or strings as the right-hand side of an IN operator.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1530 * So instead of doing a prepared statement like this:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1531 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1532 * SELECT * FROM table WHERE x IN (?,?,?,...,?);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1533 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1534 * And then binding indivdual integers to each of ? slots, an application
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1535 * can create a named collection object (named "ex1" in the following
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1536 * example), prepare a statement like this:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1537 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1538 * SELECT * FROM table WHERE x IN ex1;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1539 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1540 * Then bind an array of integer or string values to the ex1 object
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1541 * to run the statement.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1542 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1543 * USAGE:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1544 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1545 * One or more named collection objects can be created as follows:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1546 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1547 * wxSQLite3IntegerCollection p1, p2, p3;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1548 * p1 = db.CreateIntegerCollection("ex1");
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1549 * p2 = db.CreateIntegerCollection("ex2");
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1550 * p3 = db.CreateIntegerCollection("ex3");
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1551 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1552 * Each call to CreateIntegerCollection generates a new virtual table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1553 * module and a singleton of that virtual table module in the TEMP
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1554 * database. Both the module and the virtual table instance use the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1555 * name given by the second parameter. The virtual tables can then be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1556 * used in prepared statements:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1557 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1558 * SELECT * FROM t1, t2, t3
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1559 * WHERE t1.x IN ex1
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1560 * AND t2.y IN ex2
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1561 * AND t3.z IN ex3;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1562 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1563 * Each integer array is initially empty. New arrays can be bound to
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1564 * an integer array as follows:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1565 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1566 * int a1[] = { 1, 2, 3, 4 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1567 * int a2[] = { 5, 6, 7, 8, 9, 10, 11 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1568 * wxArrayInt a3;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1569 * // Fill a3
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1570 * p1.Bind(4, a1);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1571 * p2.Bind(7, a2);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1572 * p3.Bind(a3);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1573 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1574 * A single named collection object can be rebound multiple times. But do not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1575 * attempt to change the bindings of a named collection while it is in the middle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1576 * of a query.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1577 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1578 * The array that holds the integer or string values is automatically allocated
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1579 * by the Bind method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1580 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1581 * The named collection object is automatically destroyed when its corresponding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1582 * virtual table is dropped. Since the virtual tables are created in the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1583 * TEMP database, they are automatically dropped when the database connection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1584 * closes so the application does not normally need to take any special
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1585 * action to free the named collection objects.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1586 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1587 class WXDLLIMPEXP_SQLITE3 wxSQLite3NamedCollection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1588 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1589 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1590 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1591 wxSQLite3NamedCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1592
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1593 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1594 wxSQLite3NamedCollection(const wxSQLite3NamedCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1595
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1596 /// Assignement constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1597 wxSQLite3NamedCollection& operator=(const wxSQLite3NamedCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1598
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1599 /// Constructor (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1600 wxSQLite3NamedCollection(const wxString& collectionName, void* collectionData);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1601
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1602 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1603 virtual ~wxSQLite3NamedCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1604
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1605 /// Get the name of the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1606 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1607 * \return the name of the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1608 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1609 const wxString& GetName() { return m_name; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1610
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1611 protected:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1612 wxString m_name; ///< Name of the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1613 void* m_data; ///< Reference to the actual array of values representing the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1614
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1615 friend class wxSQLite3Database;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1616 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1617
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1618 /// Represents a named integer value collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1619 class WXDLLIMPEXP_SQLITE3 wxSQLite3IntegerCollection : public wxSQLite3NamedCollection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1620 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1621 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1622 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1623 wxSQLite3IntegerCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1624
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1625 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1626 wxSQLite3IntegerCollection(const wxSQLite3IntegerCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1627
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1628 /// Assignement constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1629 wxSQLite3IntegerCollection& operator=(const wxSQLite3IntegerCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1630
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1631 /// Constructor (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1632 wxSQLite3IntegerCollection(const wxString& collectionName, void* collectionData);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1633
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1634 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1635 virtual ~wxSQLite3IntegerCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1636
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1637 /// Bind a new array of integer values
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1638 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1639 * Bind a new array of integer values to this named collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1640 * \param integerCollection array of integer values to be bound
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1641 * \note Binding values to a named collection after closing the corresponding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1642 * database results in undefined behaviour, i.e. the application is likely to crash.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1643 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1644 void Bind(const wxArrayInt& integerCollection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1645
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1646 /// Bind a new array of integer values
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1647 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1648 * Bind a new array of integer values to this named collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1649 * \param n number of elements in the array
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1650 * \param integerCollection array of integer values to be bound
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1651 * \note Binding values to a named collection after closing the corresponding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1652 * database results in undefined behaviour, i.e. the application is likely to crash.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1653 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1654 void Bind(int n, int* integerCollection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1655
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1656 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1657 friend class wxSQLite3Database;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1658 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1659
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1660 /// Represents a named string value collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1661 class WXDLLIMPEXP_SQLITE3 wxSQLite3StringCollection : public wxSQLite3NamedCollection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1662 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1663 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1664 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1665 wxSQLite3StringCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1666
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1667 /// Copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1668 wxSQLite3StringCollection(const wxSQLite3StringCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1669
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1670 /// Assignement constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1671 wxSQLite3StringCollection& operator=(const wxSQLite3StringCollection& collection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1672
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1673 /// Constructor (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1674 wxSQLite3StringCollection(const wxString& collectionName, void* collectionData);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1675
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1676 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1677 virtual ~wxSQLite3StringCollection();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1678
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1679 /// Bind a new array of integer values
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1680 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1681 * Bind a new array of integer values to this named collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1682 * \param stringCollection array of integer values to be bound
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1683 * \note Binding values to a named collection after closing the corresponding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1684 * database results in undefined behaviour, i.e. the application is likely to crash.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1685 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1686 void Bind(const wxArrayString& stringCollection);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1687
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1688 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1689 friend class wxSQLite3Database;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1690 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1691
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1692 /// Represents a SQLite3 database object
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1693 class WXDLLIMPEXP_SQLITE3 wxSQLite3Database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1694 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1695 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1696 /// Default constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1697 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1698 * Initializes a SQLite database object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1699 * The SQLite database object can only be used in the same thread in which it was created.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1700 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1701 wxSQLite3Database();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1702
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1703 /// Destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1704 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1705 * Destructs a SQLite database object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1706 * The database will be closed implicitly if it is still open.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1707 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1708 virtual ~wxSQLite3Database();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1709
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1710 /// Open a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1711 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1712 * Opens the sqlite database file "filename". The "filename" is UTF-8 encoded.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1713 * If the database could not be opened (or created) successfully, then an exception is thrown.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1714 * If the database file does not exist, then a new database will be created as needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1715 * \param[in] fileName Name of the database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1716 * \param[in] key Database encryption key.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1717 * \param[in] flags Control over the database connection (see http://www.sqlite.org/c3ref/open.html for further information).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1718 * Flag values are prefixed by WX to distinguish them from the original SQLite flag values.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1719 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1720 void Open(const wxString& fileName, const wxString& key = wxEmptyString,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1721 int flags = WXSQLITE_OPEN_READWRITE | WXSQLITE_OPEN_CREATE);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1722
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1723 /// Open a SQLite3 database using a binary key
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1724 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1725 * Opens the sqlite database file "filename". The "filename" is UTF-8 encoded.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1726 * If the database could not be opened (or created) successfully, then an exception is thrown.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1727 * If the database file does not exist, then a new database will be created as needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1728 * \param[in] fileName Name of the database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1729 * \param[in] key Database encryption key.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1730 * \param[in] flags Control over the database connection (see http://www.sqlite.org/c3ref/open.html for further information).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1731 * Flag values are prefixed by WX to distinguish them from the original SQLite flag values.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1732 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1733 void Open(const wxString& fileName, const wxMemoryBuffer& key,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1734 int flags = WXSQLITE_OPEN_READWRITE | WXSQLITE_OPEN_CREATE);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1735
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1736 /// Check whether the database has been opened
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1737 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1738 * \return TRUE if database has been opened, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1739 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1740 bool IsOpen() const;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1741
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1742 /// Close a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1743 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1744 * Take care that all prepared statements have been finalized!
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1745 * Starting with version 3.6.0 SQLite has support to finialize all unfinalized
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1746 * prepared statements. The Close method has been changed to take advantage of
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1747 * this feature. Nevertheless it is recommended to explicitly finalize all
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1748 * wxSQLite3Statement instances before closing a database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1749 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1750 * NOTE: Finalizing all wxSQLite3Blob instances before closing a database is still required!
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1751 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1752 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1753 void Close();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1754
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1755 /// Backup a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1756 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1757 * This method is used to overwrite the contents of a database with the contents
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1758 * of this database. This is useful either for creating backups of the database or
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1759 * for copying an in-memory database to persistent files.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1760 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1761 * NOTE: Exclusive access is required to the target database for the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1762 * duration of the operation. However the source database is only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1763 * read-locked while it is actually being read, it is not locked
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1764 * continuously for the entire operation. Thus, the backup may be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1765 * performed on a live database without preventing other users from
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1766 * writing to the database for an extended period of time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1767 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1768 * NOTE: If the target database file already exists it must be a valid
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1769 * SQLite database, in case of an encrypted database the key used for
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1770 * backup must be the same as the key used for creation.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1771 * If this does not hold true, the file should be deleted prior to
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1772 * performing the backup.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1773 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1774 * \param[in] targetFileName Name of the target database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1775 * \param[in] key Optional database encryption key for the target database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1776 * \param[in] sourceDatabaseName Optional name of the source database (default: 'main').
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1777 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1778 void Backup(const wxString& targetFileName, const wxString& key = wxEmptyString, const wxString& sourceDatabaseName = wxT("main"));
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1779
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1780 /// Backup a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1781 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1782 * This method is used to overwrite the contents of a database with the contents
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1783 * of this database. This is useful either for creating backups of the database or
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1784 * for copying an in-memory database to persistent files.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1785 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1786 * NOTE: Exclusive access is required to the target database for the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1787 * duration of the operation. However the source database is only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1788 * read-locked while it is actually being read, it is not locked
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1789 * continuously for the entire operation. Thus, the backup may be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1790 * performed on a live database without preventing other users from
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1791 * writing to the database for an extended period of time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1792 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1793 * NOTE: If the target database file already exists it must be a valid
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1794 * SQLite database, in case of an encrypted database the key used for
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1795 * backup must be the same as the key used for creation.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1796 * If this does not hold true, the file should be deleted prior to
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1797 * performing the backup.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1798 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1799 * \param[in] targetFileName Name of the target database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1800 * \param[in] key Binary database encryption key for the target database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1801 * \param[in] sourceDatabaseName Optional name of the source database (default: 'main').
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1802 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1803 void Backup(const wxString& targetFileName, const wxMemoryBuffer& key, const wxString& sourceDatabaseName = wxT("main"));
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1804
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1805 /// Restore a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1806 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1807 * This method is used to restore the contents of this database with the contents
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1808 * of another database. This is useful either for restoring a backup of the database or
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1809 * for copying a persistent file to an in-memory database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1810 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1811 * NOTE: Exclusive access is required to the target database for the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1812 * duration of the operation. However the source database is only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1813 * read-locked while it is actually being read, it is not locked
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1814 * continuously for the entire operation. Thus, the backup may be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1815 * performed on a live database without preventing other users from
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1816 * writing to the database for an extended period of time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1817 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1818 * \param[in] sourceFileName Name of the source database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1819 * \param[in] key Optional database encryption key for the source database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1820 * \param[in] targetDatabaseName Optional name of the target database (default: 'main').
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1821 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1822 void Restore(const wxString& sourceFileName, const wxString& key = wxEmptyString, const wxString& targetDatabaseName = wxT("main"));
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1823
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1824 /// Restore a SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1825 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1826 * This method is used to restore the contents of this database with the contents
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1827 * of another database. This is useful either for restoring a backup of the database or
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1828 * for copying a persistent file to an in-memory database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1829 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1830 * NOTE: Exclusive access is required to the target database for the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1831 * duration of the operation. However the source database is only
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1832 * read-locked while it is actually being read, it is not locked
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1833 * continuously for the entire operation. Thus, the backup may be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1834 * performed on a live database without preventing other users from
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1835 * writing to the database for an extended period of time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1836 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1837 * \param[in] sourceFileName Name of the source database file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1838 * \param[in] key Optional binary database encryption key for the source database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1839 * \param[in] targetDatabaseName Optional name of the target database (default: 'main').
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1840 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1841 void Restore(const wxString& sourceFileName, const wxMemoryBuffer& key, const wxString& targetDatabaseName = wxT("main"));
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1842
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1843 /// Begin transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1844 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1845 * In SQLite transactions can be deferred, immediate, or exclusive.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1846 * Deferred means that no locks are acquired on the database until the database is first accessed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1847 * Thus with a deferred transaction, the BEGIN statement itself does nothing. Locks are not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1848 * acquired until the first read or write operation. The first read operation against a database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1849 * creates a SHARED lock and the first write operation creates a RESERVED lock. Because the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1850 * acquisition of locks is deferred until they are needed, it is possible that another thread or
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1851 * process could create a separate transaction and write to the database after the BEGIN on the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1852 * current thread has executed. If the transaction is immediate, then RESERVED locks are acquired
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1853 * on all databases as soon as the BEGIN command is executed, without waiting for the database to
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1854 * be used. After a BEGIN IMMEDIATE, it is guaranteed that no other thread or process will be able
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1855 * to write to the database or do a BEGIN IMMEDIATE or BEGIN EXCLUSIVE. Other processes can continue
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1856 * to read from the database, however. An exclusive transaction causes EXCLUSIVE locks to be acquired
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1857 * on all databases. After a BEGIN EXCLUSIVE, it is guaranteed that no other thread or process will
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1858 * be able to read or write the database until the transaction is complete.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1859 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1860 * \param[in] transactionType type of transaction (default: DEFERRED).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1861 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1862 void Begin(wxSQLite3TransactionType transactionType = WXSQLITE_TRANSACTION_DEFAULT);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1863
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1864 /// Commit transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1865 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1866 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1867 void Commit();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1868
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1869 /// Rollback transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1870 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1871 * Rolls back a transaction or optionally to a previously set savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1872 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1873 * \param savepointName optional name of a previously set savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1874 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1875 void Rollback(const wxString& savepointName = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1876
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1877 /// Get the auto commit state
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1878 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1879 * Test to see whether or not the database connection is in autocommit mode.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1880 * \return TRUE if it is and FALSE if not.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1881 * Autocommit mode is on by default. Autocommit is disabled by a BEGIN statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1882 * and reenabled by the next COMMIT or ROLLBACK.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1883 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1884 bool GetAutoCommit();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1885
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1886 /// Set savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1887 /*
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1888 * Sets a savepoint with a given name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1889 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1890 * \param savepointName the name of the savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1891 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1892 void Savepoint(const wxString& savepointName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1893
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1894 /// Release savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1895 /*
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1896 * Releases a savepoint with a given name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1897 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1898 * \param savepointName the name of the savepoint
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1899 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1900 void ReleaseSavepoint(const wxString& savepointName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1901
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1902 /// Check whether a table with the given name exists
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1903 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1904 * Checks the main database or a specific attached database for existence of a table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1905 * with a given name.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1906 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1907 * \param tableName name of the table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1908 * \param databaseName optional name of an attached database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1909 * \return TRUE if the table exists, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1910 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1911 bool TableExists(const wxString& tableName, const wxString& databaseName = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1912
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1913 /// Check whether a table with the given name exists in the main database or any attached database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1914 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1915 * \param tableName name of the table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1916 * \param databaseNames list of the names of those databases in which the table exists
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1917 * \return TRUE if the table exists at least in one database, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1918 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1919 bool TableExists(const wxString& tableName, wxArrayString& databaseNames);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1920
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1921 /// Get a list containing the names of all attached databases including the main database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1922 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1923 * \param databaseNames contains on return the list of the database names
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1924 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1925 void GetDatabaseList(wxArrayString& databaseNames);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1926
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1927 /// Get a list containing the names of all attached databases including the main database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1928 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1929 * \param databaseNames contains on return the list of the database names
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1930 * \param databaseFiles contains on return the list of the database file names
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1931 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1932 void GetDatabaseList(wxArrayString& databaseNames, wxArrayString& databaseFiles);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1933
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1934 /// Enable or disable foreign key support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1935 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1936 * Starting with SQLite version 3.6.19 foreign key constraints can be enforced.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1937 * Foreign key constraints are disabled by default (for backwards compatibility),
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1938 * so they must be enabled separately for each database connection.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1939 * \note Future releases of SQLite might change so that foreign key constraints
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1940 * are enabled by default. No assumptions should be made about whether or not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1941 * foreign keys are enabled by default
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1942 * \return TRUE if the requested action succeeded, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1943 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1944 bool EnableForeignKeySupport(bool enable);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1945
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1946 /// Check whether foreign key support is enabled for this database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1947 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1948 * \return TRUE if foreign key support is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1949 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1950 bool IsForeignKeySupportEnabled();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1951
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1952 /// Set SQLite journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1953 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1954 * \param mode the journal mode to be set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1955 * \param database the attached database for which the journal mode should be set. If not given then
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1956 * the journal mode of all attached databases is set.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1957 * \return the active journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1958 * \note The journal mode for an in-memory database is either MEMORY or OFF and can not be changed
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1959 * to a different value. An attempt to change the journal mode of an in-memory database to any setting
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1960 * other than MEMORY or OFF is ignored. Note also that the journal mode cannot be changed while a
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1961 * transaction is active.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1962 * The WAL journaling mode uses a write-ahead log instead of a rollback journal to implement transactions.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1963 * The WAL journaling mode is persistent; after being set it stays in effect across multiple database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1964 * connections and after closing and reopening the database. A database in WAL journaling mode can only be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1965 * accessed by SQLite version 3.7.0 or later.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1966 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1967 wxSQLite3JournalMode SetJournalMode(wxSQLite3JournalMode mode, const wxString& database = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1968
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1969 /// Get the active SQLite journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1970 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1971 * \param database the attached database for which the journal mode should be queried (default: main)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1972 * \return active journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1973 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1974 wxSQLite3JournalMode GetJournalMode(const wxString& database = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1975
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1976 /// Check the syntax of an SQL statement given as a wxString
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1977 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1978 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1979 * \return TRUE if the syntax is correct, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1980 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1981 bool CheckSyntax(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1982
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1983 /// Check the syntax of an SQL statement given as a statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1984 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1985 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1986 * \return TRUE if the syntax is correct, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1987 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1988 bool CheckSyntax(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1989
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1990 /// Check the syntax of an SQL statement given as a utf-8 character string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1991 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1992 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1993 * \return TRUE if the syntax is correct, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1994 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1995 bool CheckSyntax(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1996
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1997 /// Execute a insert, update or delete SQL statement given as a wxString
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1998 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
1999 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2000 * \return the number of database rows that were changed (or inserted or deleted)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2001 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2002 int ExecuteUpdate(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2003
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2004 /// Execute a insert, update or delete SQL statement given as a statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2005 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2006 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2007 * \return the number of database rows that were changed (or inserted or deleted)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2008 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2009 int ExecuteUpdate(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2010
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2011 /// Execute a insert, update or delete SQL statement given as a utf-8 character string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2012 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2013 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2014 * \return the number of database rows that were changed (or inserted or deleted)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2015 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2016 int ExecuteUpdate(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2017
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2018 /// Execute a SQL query statement given as a wxString
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2019 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2020 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2021 * \return result set instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2022 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2023 wxSQLite3ResultSet ExecuteQuery(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2024
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2025 /// Execute a SQL query statement given as a statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2026 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2027 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2028 * \return result set instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2029 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2030 wxSQLite3ResultSet ExecuteQuery(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2031
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2032 /// Execute a SQL query statement given as a utf-8 character string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2033 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2034 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2035 * \return result set instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2036 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2037 wxSQLite3ResultSet ExecuteQuery(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2038
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2039 /// Execute a scalar SQL query statement given as a wxString
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2040 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2041 * Allows to easily retrieve the result of queries returning a single integer result
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2042 * like SELECT COUNT(*) FROM table WHERE condition.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2043 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2044 * \return first column of first row as an int
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2045 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2046 int ExecuteScalar(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2047
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2048 /// Execute a scalar SQL query statement given as a statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2049 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2050 * Allows to easily retrieve the result of queries returning a single integer result
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2051 * like SELECT COUNT(*) FROM table WHERE condition.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2052 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2053 * \return first column of first row as an int
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2054 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2055 int ExecuteScalar(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2056
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2057 /// Execute a scalar SQL query statement given as a utf-8 character string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2058 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2059 * Allows to easily retrieve the result of queries returning a single integer result
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2060 * like SELECT COUNT(*) FROM table WHERE condition.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2061 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2062 * \return first column of first row as an int
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2063 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2064 int ExecuteScalar(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2065
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2066 /// Get the result table for a SQL query statement given as a wxString
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2067 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2068 * Returns all resulting rows of the query for later processing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2069 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2070 * \return table instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2071 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2072 wxSQLite3Table GetTable(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2073
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2074 /// Get the result table for a SQL query statement given as a statement buffer
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2075 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2076 * Returns all resulting rows of the query for later processing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2077 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2078 * \return table instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2079 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2080 wxSQLite3Table GetTable(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2081
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2082 /// Get the result table for a SQL query statement given as a utf-8 character string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2083 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2084 * Returns all resulting rows of the query for later processing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2085 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2086 * \return table instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2087 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2088 wxSQLite3Table GetTable(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2089
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2090 /// Prepare a SQL query statement given as a wxString for parameter binding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2091 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2092 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2093 * \return statement instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2094 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2095 wxSQLite3Statement PrepareStatement(const wxString& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2096
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2097 /// Prepare a SQL query statement given as a statement buffer for parameter binding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2098 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2099 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2100 * \return statement instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2101 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2102 wxSQLite3Statement PrepareStatement(const wxSQLite3StatementBuffer& sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2103
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2104 /// Prepare a SQL query statement given as a utf-8 character string for parameter binding
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2105 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2106 * \param sql query string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2107 * \return statement instance
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2108 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2109 wxSQLite3Statement PrepareStatement(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2110
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2111 /// Get the row id of last inserted row
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2112 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2113 * Each entry in an SQLite table has a unique integer key.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2114 * (The key is the value of the INTEGER PRIMARY KEY column if there is such a column,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2115 * otherwise the key is generated at random. The unique key is always available as the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2116 * ROWID, OID, or _ROWID_ column.)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2117 * \return the integer key of the most recent insert in the database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2118 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2119 wxLongLong GetLastRowId();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2120
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2121 /// Get handle to a read only BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2122 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2123 * \param rowId
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2124 * \param columnName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2125 * \param tableName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2126 * \param dbName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2127 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2128 wxSQLite3Blob GetReadOnlyBlob(wxLongLong rowId,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2129 const wxString& columnName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2130 const wxString& tableName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2131 const wxString& dbName = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2132
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2133 /// Get handle to a writable BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2134 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2135 * \param rowId
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2136 * \param columnName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2137 * \param tableName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2138 * \param dbName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2139 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2140 wxSQLite3Blob GetWritableBlob(wxLongLong rowId,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2141 const wxString& columnName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2142 const wxString& tableName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2143 const wxString& dbName = wxEmptyString);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2144
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2145 /// Get handle to a BLOB
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2146 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2147 * \param rowId
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2148 * \param columnName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2149 * \param tableName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2150 * \param dbName
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2151 * \param writable
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2152 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2153 wxSQLite3Blob GetBlob(wxLongLong rowId,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2154 const wxString& columnName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2155 const wxString& tableName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2156 const wxString& dbName = wxEmptyString,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2157 bool writable = true);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2158
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2159 /// Create a named integer value collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2160 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2161 * Invoke this method to create a specific instance of an integer collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2162 * Initially the created collection is empty. Use it's Bind method to actually bind
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2163 * an array of values to the collection.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2164 * \param collectionName name of the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2165 * \return the new integer collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2166 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2167 * Each integer value collection object corresponds to a virtual table in the TEMP table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2168 * with a name of collectionName.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2169 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2170 * The virtual table will be dropped implicitly when the database connection is closed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2171 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2172 wxSQLite3IntegerCollection CreateIntegerCollection(const wxString& collectionName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2173
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2174 /// Create a named string value collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2175 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2176 * Invoke this method to create a specific instance of a string collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2177 * Initially the created collection is empty. Use it's Bind method to actually bind
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2178 * an array of values to the collection.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2179 * \param collectionName name of the collection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2180 * \return the new string collection object.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2181 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2182 * Each integer value collection object corresponds to a virtual table in the TEMP table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2183 * with a name of collectionName.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2184 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2185 * The virtual table will be dropped implicitly when the database connection is closed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2186 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2187 wxSQLite3StringCollection CreateStringCollection(const wxString& collectionName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2188
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2189 /// Interrupt a long running query
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2190 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2191 * Causes any pending database operation to abort and return at its earliest opportunity.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2192 * This method is typically called in response to a user action such as pressing "Cancel"
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2193 * or Ctrl-C where the user wants a long query operation to halt immediately.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2194 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2195 void Interrupt();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2196
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2197 /// Set the busy timeout
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2198 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2199 * This method sets a busy handler that sleeps for a while when a table is locked.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2200 * The handler will sleep multiple times until at least "ms" milliseconds of sleeping
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2201 * have been done.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2202 * Calling this routine with an argument less than or equal to zero turns off all busy handlers.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2203 * \param milliSeconds timeout in milliseconds
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2204 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2205 void SetBusyTimeout(int milliSeconds);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2206
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2207 /// Create a user-defined scalar function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2208 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2209 * Registers a SQL scalar function with the database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2210 * \param name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2211 * \param argCount number of arguments the scalar function takes.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2212 * If this argument is -1 then the scalar function may take any number of arguments.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2213 * \param function instance of an scalar function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2214 * \return TRUE on successful registration, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2215 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2216 bool CreateFunction(const wxString& name, int argCount, wxSQLite3ScalarFunction& function);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2217
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2218 /// Create a user-defined aggregate function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2219 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2220 * Registers a SQL aggregate function with the database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2221 * \param name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2222 * \param argCount number of arguments the aggregate function takes.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2223 * If this argument is -1 then the aggregate function may take any number of arguments.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2224 * \param function instance of an aggregate function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2225 * \return TRUE on successful registration, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2226 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2227 bool CreateFunction(const wxString& name, int argCount, wxSQLite3AggregateFunction& function);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2228
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2229 /// Create a user-defined authorizer function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2230 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2231 * Registers an authorizer object with the SQLite library. The authorizer is invoked
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2232 * (at compile-time, not at run-time) for each attempt to access a column of a table in the database.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2233 * The authorizer should return SQLITE_OK if access is allowed, SQLITE_DENY if the entire SQL statement
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2234 * should be aborted with an error and SQLITE_IGNORE if the column should be treated as a NULL value.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2235 * \param authorizer instance of an authorizer function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2236 * \return TRUE on successful registration, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2237 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2238 bool SetAuthorizer(wxSQLite3Authorizer& authorizer);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2239
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2240 /// Create a user-defined commit callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2241 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2242 * Registers a callback function object to be invoked whenever a new transaction is committed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2243 * If the callback function returns non-zero, then the commit is converted into a rollback.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2244 * Registering a NULL function object disables the callback. Only a single commit hook callback
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2245 * can be registered at a time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2246 * \param commitHook address of an instance of a commit callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2247 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2248 void SetCommitHook(wxSQLite3Hook* commitHook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2249
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2250 /// Create a user-defined rollback callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2251 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2252 * Registers a callback function object to be invoked whenever a transaction is rolled back.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2253 * Registering a NULL function object disables the callback. Only a single rollback hook callback
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2254 * can be registered at a time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2255 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2256 * For the purposes of this API, a transaction is said to have been rolled back if an explicit
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2257 * "ROLLBACK" statement is executed, or an error or constraint causes an implicit rollback to occur.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2258 * The callback is not invoked if a transaction is automatically rolled back because the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2259 * connection is closed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2260 * \param rollbackHook address of an instance of a rollback callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2261 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2262 void SetRollbackHook(wxSQLite3Hook* rollbackHook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2263
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2264 /// Create a user-defined update callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2265 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2266 * Registers a callback function object to be invoked whenever a row is updated, inserted or deleted.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2267 * Registering a NULL function object disables the callback. Only a single commit hook callback
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2268 * can be registered at a time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2269 * The update hook is not invoked when internal system tables are modified (i.e. sqlite_master and sqlite_sequence).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2270 * \param updateHook address of an instance of an update callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2271 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2272 void SetUpdateHook(wxSQLite3Hook* updateHook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2273
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2274 /// Create a user-defined Write Ahead Log callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2275 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2276 * Registers a callback function object to be invoked whenever a commit has taken place in WAL journal mode.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2277 * Registering a NULL function object disables the callback. Only a single Write Ahead Log hook callback
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2278 * can be registered at a time.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2279 * \param walHook address of an instance of a Write Ahead Log callback function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2280 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2281 void SetWriteAheadLogHook(wxSQLite3Hook* walHook);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2282
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2283 /// Checkpoint database in write-ahead log mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2284 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2285 * Causes an optionally named database to be checkpointed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2286 * If no database name is given, then a checkpoint is run on all databases associated with this
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2287 * database instance. If the database instance is not in write-ahead log mode then this method
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2288 * is a harmless no-op.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2289 * \param database name of a database to be checkpointed
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2290 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2291 void WriteAheadLogCheckpoint(const wxString& database);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2292
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2293 /// Automatically checkpoint database in write-ahead log mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2294 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2295 * Causes any database associated with this database instance to automatically checkpoint after
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2296 * committing a transaction if there are N or more frames in the write-ahead log file.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2297 * Passing zero or a negative value as the nFrame parameter disables automatic checkpoints entirely.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2298 * \param frameCount frame threshold
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2299 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2300 void AutoWriteAheadLogCheckpoint(int frameCount);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2301
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2302 /// Create a user-defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2303 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2304 * Registers a callback function object to be invoked whenever this collation is needed
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2305 * in comparing strings.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2306 * Registering a NULL function object disables the specified collation sequence.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2307 * \param name name of a user-defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2308 * \param collation address of an instance of a user-defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2309 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2310 void SetCollation(const wxString& name, wxSQLite3Collation* collation);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2311
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2312 /// Return meta information about a specific column of a specific database table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2313 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2314 * \param dbName is either the name of the database (i.e. "main", "temp" or an attached database) or an empty string. If it is an empty string all attached databases are searched for the table.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2315 * \param tableName name of the database table
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2316 * \param columnName name of the database column
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2317 * \param dataType declared data type of the column. Pass NULL if information not needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2318 * \param collation name of the collation sequence. Pass NULL if information is not needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2319 * \param notNull output flag whether the column has a not null constraint. Pass NULL if information not needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2320 * \param primaryKey output flag whether the column is part of the primary key. Pass NULL if information not needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2321 * \param autoIncrement output flag whether the column is an auto increment column. Pass NULL if information not needed.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2322 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2323 * This method is only available if WXSQLITE3_HAVE_METADATA is defined and SQLite has been compiled with SQLITE_ENABLE_COLUMN_METADATA defined.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2324 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2325 void GetMetaData(const wxString& dbName, const wxString& tableName, const wxString& columnName,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2326 wxString* dataType = NULL, wxString* collation = NULL,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2327 bool* notNull = NULL, bool* primaryKey = NULL, bool* autoIncrement = NULL);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2328
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2329 /// Load a database extension
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2330 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2331 * \param fileName Name of the shared library containing extension.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2332 * \param entryPoint Name of the entry point.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2333 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2334 void LoadExtension(const wxString& fileName, const wxString& entryPoint = wxT("sqlite3_extension_init"));
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2335
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2336 /// Enable or disable loading of database extensions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2337 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2338 * \param enable Flag whether to enable (TRUE) or disable (FALSE) loadable extensions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2339 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2340 void EnableLoadExtension(bool enable);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2341
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2342 /// Change the encryption key of the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2343 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2344 * If the database is currently not encrypted, this method will encrypt it.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2345 * If an empty key (with key length == 0) is given, the database is decrypted.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2346 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2347 * \param newKey The new encryption key (will be converted to UTF-8)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2348 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2349 void ReKey(const wxString& newKey);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2350
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2351 /// Change the encryption key of the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2352 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2353 * If the database is currently not encrypted, this method will encrypt it.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2354 * If an empty key (with key length == 0) is given, the database is decrypted.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2355 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2356 * \param newKey The new encryption key
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2357 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2358 void ReKey(const wxMemoryBuffer& newKey);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2359
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2360 /// Check whether the database is encrypted
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2361 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2362 * Check whether the database has been opened using an encryption key.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2363 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2364 * \return TRUE if database is encrypted, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2365 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2366 bool IsEncrypted() const { return m_isEncrypted; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2367
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2368 /// Query the value of a database limit
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2369 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2370 * This method allows to query several database limits. Consult the SQLite
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2371 * documentation for further explanation.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2372 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2373 * \param id The identifier of the limit to be queried
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2374 * \return the current value of the queried limit
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2375 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2376 int GetLimit(wxSQLite3LimitType id);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2377
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2378 /// Change a database limit to a new value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2379 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2380 * This method allows to change several database limits. Consult the SQLite
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2381 * documentation for further explanation.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2382 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2383 * \param id The identifier of the limit to be queried
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2384 * \param newValue The new value of the limit to be set
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2385 * \return the previous value of the specified limit
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2386 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2387 int SetLimit(wxSQLite3LimitType id, int newValue);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2388
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2389 /// Convert database limit type to string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2390 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2391 * \param type The database limit type to be converted to string representation.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2392 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2393 static wxString LimitTypeToString(wxSQLite3LimitType type);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2394
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2395 /// Initialize the SQLite library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2396 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2397 * Starting with SQLite version 3.6.0 there is a new method to initialize
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2398 * the SQLite library. Currently an explicit call to this method is not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2399 * required, but this behaviour might change in the future of SQLite.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2400 * Therefore it is recommended to call this method once before accessing
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2401 * any SQLite databases.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2402 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2403 static void InitializeSQLite();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2404
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2405 /// Shutdown the SQLite library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2406 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2407 * Starting with SQLite version 3.6.0 there is a new method to shutdown
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2408 * the SQLite library. Currently an explicit call to this method is not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2409 * required, but this behaviour might change in the future of SQLite.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2410 * Therefore it is recommended to call this method once when no further
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2411 * access to any SQLite databases is required.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2412 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2413 static void ShutdownSQLite();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2414
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2415 /// Get random bytes
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2416 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2417 * SQLite contains a high-quality pseudo-random number generator.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2418 * This method allows to access it for application specofoc purposes.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2419 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2420 * \param n The amount of random bytes to be created
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2421 * \param random A memory buffer containing the random bytes on return
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2422 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2423 static bool Randomness(int n, wxMemoryBuffer& random);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2424
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2425 /// Enable or disable SQLite shared cache
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2426 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2427 * The cache sharing mode set effects all subsequent database connections.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2428 * Existing database connections continue use the sharing mode that was in effect
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2429 * at the time they were opened.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2430 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2431 * Virtual tables cannot be used with a shared cache.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2432 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2433 static void SetSharedCache(bool enable);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2434
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2435 /// Check whether SQLite shared cache is enabled
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2436 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2437 * \return TRUE if the SQLite shared cache is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2438 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2439 static bool IsSharedCacheEnabled() { return ms_sharedCacheEnabled; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2440
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2441 /// Get the version of the underlying SQLite3 library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2442 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2443 * \return a string which contains the version number of the library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2444 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2445 static wxString GetVersion();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2446
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2447 /// Get the source id of the underlying SQLite3 library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2448 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2449 * \return a string which contains the source id of the library
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2450 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2451 static wxString GetSourceId();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2452
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2453 /// Check SQLite compile option
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2454 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2455 * Check whether the compile option with a given name has been used on building SQLite.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2456 * The SQLITE_ prefix may be omitted from the option name passed to this method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2457 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2458 * \param optionName name of the compile option to be queried
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2459 * \return TRUE if the compile option was in use, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2460 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2461 * \note If the option name is unknown or if the SQLite version is lower than 3.6.23
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2462 * this method returns FALSE.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2463 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2464 static bool CompileOptionUsed(const wxString& optionName);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2465
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2466 /// Get SQLite compile option name
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2467 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2468 * Get the name of a SQLite compile option at a given index.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2469 * This method allows interating over the list of options that were defined
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2470 * at compile time. If the option index is out of range, an empty string is returned.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2471 * The SQLITE_ prefix is omitted from any strings returned by this method.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2472 *
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2473 * \param optionIndex Index of the compile option
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2474 * \return a string containing the name of the n-th
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2475 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2476 static wxString GetCompileOptionName(int optionIndex);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2477
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2478 /// Convert journal mode to/from string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2479 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2480 * \param mode the wxSQLite3JournalMode enum value signifying the desired journal mode.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2481 * \return the string representation of the journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2482 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2483 static wxString ConvertJournalMode(wxSQLite3JournalMode mode);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2484
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2485 /// Convert journal mode to/from string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2486 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2487 * \param mode the string representation of the desired journal mode.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2488 * \return the enum representation of the journal mode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2489 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2490 static wxSQLite3JournalMode ConvertJournalMode(const wxString& mode);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2491
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2492 /// Check whether wxSQLite3 has been compiled with encryption support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2493 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2494 * \return TRUE if encryption support is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2495 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2496 static bool HasEncryptionSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2497
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2498 /// Check whether wxSQLite3 has been compiled with meta data support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2499 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2500 * \return TRUE if meta data support is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2501 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2502 static bool HasMetaDataSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2503
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2504 /// Check whether wxSQLite3 has been compiled with loadable extension support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2505 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2506 * \return TRUE if loadable extension support is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2507 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2508 static bool HasLoadExtSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2509
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2510 /// Check whether wxSQLite3 has been compiled with support for named collections
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2511 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2512 * \return TRUE if named collection support is enabled, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2513 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2514 static bool HasNamedCollectionSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2515
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2516 /// Check whether wxSQLite3 has support for incremental BLOBs
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2517 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2518 * \return TRUE if incremental BLOB support is available, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2519 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2520 static bool HasIncrementalBlobSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2521
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2522 /// Check whether wxSQLite3 has support for SQLite savepoints
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2523 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2524 * \return TRUE if SQLite savepoints are supported, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2525 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2526 static bool HasSavepointSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2527
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2528 /// Check whether wxSQLite3 has support for SQLite backup/restore
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2529 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2530 * \return TRUE if SQLite backup/restore is supported, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2531 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2532 static bool HasBackupSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2533
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2534 /// Check whether wxSQLite3 has support for SQLite write-ahead log
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2535 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2536 * \return TRUE if SQLite write-ahead log is supported, FALSE otherwise
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2537 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2538 static bool HasWriteAheadLogSupport();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2539
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2540 protected:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2541 /// Access SQLite's internal database handle
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2542 void* GetDatabaseHandle() { return m_db; }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2543
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2544 /// Activate the callback for needed collations for this database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2545 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2546 * To avoid having to register all collation sequences before a database can be used,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2547 * a single callback function may be registered with the database handle to be called
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2548 * whenever an undefined collation sequence is required.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2549 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2550 void SetCollationNeededCallback();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2551
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2552 /// Request the instantiation of a user defined collation sequence
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2553 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2554 * This method is called for every undefined collation sequence.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2555 * In a derived database class this method should call SetCollation registering an
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2556 * appropriate collation class instance.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2557 * \param collationName name of the collation which is needed for string comparison
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2558 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2559 virtual void SetNeededCollation(const wxString& WXUNUSED(collationName)) {}
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2560
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2561 /// Execute a comparison using a user-defined collation
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2562 static int ExecComparisonWithCollation(void* collation, int len1, const void* txt1, int len2, const void* txt2);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2563
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2564 /// Execute callback for needed collation sequences
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2565 static void ExecCollationNeeded(void* db, void* internalDb, int eTextRep, const char* name);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2566
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2567 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2568 /// Private copy constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2569 wxSQLite3Database(const wxSQLite3Database& db);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2570
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2571 /// Private assignment constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2572 wxSQLite3Database& operator=(const wxSQLite3Database& db);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2573
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2574 /// Prepare a SQL statement (internal use only)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2575 void* Prepare(const char* sql);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2576
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2577 /// Check for valid database connection
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2578 void CheckDatabase();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2579
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2580 void* m_db; ///< associated SQLite3 database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2581 int m_busyTimeoutMs; ///< Timeout in milli seconds
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2582 bool m_isEncrypted; ///< Flag whether the database is encrypted or not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2583
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2584 static bool ms_sharedCacheEnabled; ///< Flag whether SQLite shared cache is enabled
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2585 static bool ms_hasEncryptionSupport; ///< Flag whether wxSQLite3 has been compiled with encryption support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2586 static bool ms_hasMetaDataSupport; ///< Flag whether wxSQLite3 has been compiled with meta data support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2587 static bool ms_hasLoadExtSupport; ///< Flag whether wxSQLite3 has been compiled with loadable extension support
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2588 static bool ms_hasNamedCollectionSupport; ///< Flag whether wxSQLite3 has been compiled with support for named collections
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2589 static bool ms_hasIncrementalBlobSupport; ///< Flag whether wxSQLite3 has support for incremental BLOBs
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2590 static bool ms_hasSavepointSupport; ///< Flag whether wxSQLite3 has support for SQLite savepoints
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2591 static bool ms_hasBackupSupport; ///< Flag whether wxSQLite3 has support for SQLite backup/restore
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2592 static bool ms_hasWriteAheadLogSupport; ///< Flag whether wxSQLite3 has support for SQLite write-ahead log
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2593 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2594
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2595 /// RAII class for managing transactions
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2596 /***
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2597 * This object allows easy managment of transaction. It con only be
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2598 * created on the stack. This guarantees that the destructor is called
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2599 * at the moment it goes out of scope. Usage:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2600 * \code
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2601 * void doDB(wxSQLite3Database *db)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2602 * {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2603 * wxSQLite3Transaction t(db);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2604 * doDatabaseOperations();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2605 * t.Commit();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2606 * }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2607 * \endcode
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2608 * In case doDatabseOperations() fails by throwing an exception,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2609 * the transaction is automatically rolled back. If it succedes,
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2610 * Commit() commits the changes to the db and the destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2611 * of Transaction does nothing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2612 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2613 class WXDLLIMPEXP_SQLITE3 wxSQLite3Transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2614 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2615 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2616 /// Constructor. Start the Transaction.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2617 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2618 * The constructor starts the transaction.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2619 * \param db Pointer to the open Database. The pointer to the database
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2620 * is NOT freed on destruction!
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2621 * \param transactionType Type of the transaction to be opened.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2622 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2623 explicit wxSQLite3Transaction(wxSQLite3Database* db, wxSQLite3TransactionType transactionType = WXSQLITE_TRANSACTION_DEFAULT);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2624
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2625 /// Destructor.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2626 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2627 * The destructor does nothing if the changes were already commited (see commit()).
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2628 * In case the changes were not commited, a call to the destructor rolls back the
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2629 * transaction.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2630 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2631 ~wxSQLite3Transaction();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2632
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2633 /// Commits the transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2634 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2635 * Commits the transaction if active. If not, it does nothing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2636 * After the commit, the transaction is not active.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2637 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2638 void Commit();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2639
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2640 /// Rolls back the transaction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2641 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2642 * Rolls back the transaction if active. If not, it does nothing.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2643 * After the rollback, the transaction is not active.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2644 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2645 void Rollback();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2646
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2647 /// Determins wether the transaction is open or not
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2648 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2649 * \return TRUE if the constructor successfully opend the transaction, false otherwise.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2650 * After committing the transaction, active returns false.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2651 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2652 inline bool IsActive()
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2653 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2654 return m_database != NULL;
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2655 }
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2656
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2657 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2658 /// New operator (May only be created on the stack)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2659 static void *operator new(size_t size);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2660
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2661 /// Delete operator (May not be deleted (for symmetry))
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2662 static void operator delete(void *ptr);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2663
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2664 /// Copy constructor (Must not be copied)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2665 wxSQLite3Transaction(const wxSQLite3Transaction&);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2666
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2667 /// Assignment operator (Must not be assigned)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2668 wxSQLite3Transaction& operator=(const wxSQLite3Transaction&);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2669
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2670 wxSQLite3Database* m_database; ///< Pointer to the associated database (no ownership)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2671 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2672
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2673 #if wxUSE_REGEX
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2674
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2675 /// User defined function for REGEXP operator
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2676 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2677 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2678 class WXDLLIMPEXP_SQLITE3 wxSQLite3RegExpOperator : public wxSQLite3ScalarFunction
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2679 {
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2680 public:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2681 /// Constructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2682 wxSQLite3RegExpOperator(int flags = wxRE_DEFAULT);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2683
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2684 /// Virtual destructor
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2685 virtual ~wxSQLite3RegExpOperator();
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2686
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2687 /// Execute the scalar function
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2688 /**
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2689 * This method is invoked for each appearance of the scalar function in the SQL query.
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2690 * \param ctx function context which can be used to access arguments and result value
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2691 */
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2692 virtual void Execute(wxSQLite3FunctionContext& ctx);
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2693
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2694 private:
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2695 wxString m_exprStr; ///< Last regular expression string
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2696 wxRegEx m_regEx; ///< Regular expression cache (currently only 1 instance)
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2697 int m_flags; ///< Flags for regular expression
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2698 };
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2699
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2700 #endif // wxUSE_REGEX
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2701
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2702 #endif
c174ac668e9f First commit ! (ver2.8)
pyon@macmini
parents:
diff changeset
2703