diff options
author | Kandrashin Denis <mail@lintest.ru> | 2013-08-16 00:18:50 +0400 |
---|---|---|
committer | Kandrashin Denis <mail@lintest.ru> | 2013-08-16 01:43:04 +0400 |
commit | 40071db69be9a64846c6969bd98ca4c475d3f1f9 (patch) | |
tree | 262a194e1737ee6fd8cdca01e42574a0ff0ad75d | |
parent | d1f1814d69980adbea89e498cb303e28a3172d5f (diff) |
Use original wxSQLite3 library
73 files changed, 747 insertions, 5704 deletions
diff --git a/Makefile.in b/Makefile.in index a978ed10..6b06b830 100644 --- a/Makefile.in +++ b/Makefile.in @@ -645,8 +645,8 @@ mrl_crengine_wordfmt.o: $(srcdir)/3rdparty/crengine/src/wordfmt.cpp mrl_crengine_xutils.o: $(srcdir)/3rdparty/crengine/src/xutils.cpp $(CXXC) -c -o $@ $(MRL_CRENGINE_CXXFLAGS) $(srcdir)/3rdparty/crengine/src/xutils.cpp -mrl_wxsqlite3_wxsqlite3.o: $(srcdir)/sources/WxSQLite3/wxsqlite3.cpp - $(CXXC) -c -o $@ $(MRL_WXSQLITE3_CXXFLAGS) $(srcdir)/sources/WxSQLite3/wxsqlite3.cpp +mrl_wxsqlite3_wxsqlite3.o: $(srcdir)/3rdparty/wxsqlite3/src/wxsqlite3.cpp + $(CXXC) -c -o $@ $(MRL_WXSQLITE3_CXXFLAGS) $(srcdir)/3rdparty/wxsqlite3/src/wxsqlite3.cpp mrl_wxbzip2_bzipstream.o: $(srcdir)/3rdparty/wxbzipstream/bzipstream.cpp $(CXXC) -c -o $@ $(MRL_WXBZIP2_CXXFLAGS) $(srcdir)/3rdparty/wxbzipstream/bzipstream.cpp diff --git a/myrulib.bkl b/myrulib.bkl index f67b64da..2cd650f4 100644 --- a/myrulib.bkl +++ b/myrulib.bkl @@ -112,8 +112,8 @@ <lib id="mrl_wxsqlite3" template="wx-lib" cond="USE_WXSQL=='builtin'"> <define>NDEBUG</define> - <sources>sources/WxSQLite3/wxsqlite3.cpp</sources> <include>$(SRCDIR)/3rdparty/wxsqlite3/include</include> + <sources>3rdparty/wxsqlite3/src/wxsqlite3.cpp</sources> </lib> <lib id="mrl_wxbzip2" template="wx-lib"> diff --git a/sources/MyRuLib/FbAlphabet.cpp b/sources/MyRuLib/FbAlphabet.cpp index aadd6023..1d9b285b 100644 --- a/sources/MyRuLib/FbAlphabet.cpp +++ b/sources/MyRuLib/FbAlphabet.cpp @@ -38,7 +38,7 @@ void * FbAlphabetThread::Entry() wxString sql = wxT("SELECT DISTINCT letter, count(id) FROM authors GROUP BY letter ORDER BY letter");
FbCommonDatabase database;
database.JoinThread(this);
- wxSQLite3ResultSet res = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet res = database.ExecuteQuery(sql);
while (res.NextRow()) {
wxString letter = Upper(res.GetString(0).Left(1));
if (letter.IsEmpty()) continue;
diff --git a/sources/MyRuLib/FbBookEvent.h b/sources/MyRuLib/FbBookEvent.h index 5430050a..efbd45a8 100644 --- a/sources/MyRuLib/FbBookEvent.h +++ b/sources/MyRuLib/FbBookEvent.h @@ -2,7 +2,7 @@ #define __FBBOOKEVENT_H__
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbBookTypes.h"
#include "FbMasterInfo.h"
#include "FbMasterTypes.h"
diff --git a/sources/MyRuLib/FbBookMenu.cpp b/sources/MyRuLib/FbBookMenu.cpp index 769cc175..caff472a 100644 --- a/sources/MyRuLib/FbBookMenu.cpp +++ b/sources/MyRuLib/FbBookMenu.cpp @@ -97,7 +97,7 @@ void FbBookMenu::AppendAuth() }
FbCommonDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
wxString name = result.GetString(1);
if (name.IsEmpty()) continue;
@@ -125,7 +125,7 @@ void FbBookMenu::AppendSeqn() }
FbCommonDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
wxString name = result.GetString(1);
if (name.IsEmpty()) continue;
@@ -142,7 +142,7 @@ void FbBookMenu::AppendFldr(int folder) wxString sql = wxT("SELECT id, value FROM folders ORDER BY value");
FbLocalDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
int key = result.GetInt(0);
diff --git a/sources/MyRuLib/FbCacheBook.cpp b/sources/MyRuLib/FbCacheBook.cpp index ed52c1c5..ebf81969 100644 --- a/sources/MyRuLib/FbCacheBook.cpp +++ b/sources/MyRuLib/FbCacheBook.cpp @@ -12,11 +12,11 @@ IMPLEMENT_CLASS(FbCacheBook, wxObject)
-FbCacheBook FbCacheBook::Get(int code, wxSQLite3Database & database)
+FbCacheBook FbCacheBook::Get(int code, FbSQLite3Database & database)
{
- wxSQLite3Statement stmt = database.PrepareStatement(GetSQL());
+ FbSQLite3Statement stmt = database.PrepareStatement(GetSQL());
stmt.Bind(1, code);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (result.NextRow())
return FbCacheBook(code, result);
else return 0;
@@ -84,7 +84,7 @@ wxString FbCacheBook::GetSQL() ");
}
-FbCacheBook::FbCacheBook(int code, wxSQLite3ResultSet &result)
+FbCacheBook::FbCacheBook(int code, FbSQLite3ResultSet &result)
: m_code(code)
, m_name(result.GetString(0))
, m_auth(result.GetString(9))
diff --git a/sources/MyRuLib/FbCacheBook.h b/sources/MyRuLib/FbCacheBook.h index 933fb0c2..f5149597 100644 --- a/sources/MyRuLib/FbCacheBook.h +++ b/sources/MyRuLib/FbCacheBook.h @@ -2,14 +2,14 @@ #define __FBCACHEBOOK_H__
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
class FbCacheBook: public wxObject
{
public:
- static FbCacheBook Get(int code, wxSQLite3Database & database);
+ static FbCacheBook Get(int code, FbSQLite3Database & database);
FbCacheBook(int code = 0);
- FbCacheBook(int code, wxSQLite3ResultSet &result);
+ FbCacheBook(int code, FbSQLite3ResultSet &result);
FbCacheBook(const FbCacheBook &book);
FbCacheBook & operator =(const FbCacheBook &book);
operator bool() const { return m_code; }
diff --git a/sources/MyRuLib/FbCollection.cpp b/sources/MyRuLib/FbCollection.cpp index 5073102d..0d366890 100644 --- a/sources/MyRuLib/FbCollection.cpp +++ b/sources/MyRuLib/FbCollection.cpp @@ -46,13 +46,13 @@ WX_DEFINE_OBJARRAY(FbBookAuthsArray); IMPLEMENT_CLASS(FbBookSeqns, wxObject)
-FbBookSeqns::FbBookSeqns(int code, wxSQLite3Database &database)
+FbBookSeqns::FbBookSeqns(int code, FbSQLite3Database &database)
: m_code(code)
{
wxString sql = wxT("SELECT AGGREGATE(DISTINCT value), MAX(bookseq.number) FROM bookseq LEFT JOIN sequences ON id_seq=id WHERE id_book=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, code);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (result.NextRow()) {
m_name = result.GetString(0);
m_numb = result.GetInt(1);
@@ -77,7 +77,7 @@ WX_DEFINE_OBJARRAY(FbBookSeqnsArray); IMPLEMENT_CLASS(FbParamData, wxObject)
-FbParamData & FbParamData::operator=(wxSQLite3ResultSet & result)
+FbParamData & FbParamData::operator=(FbSQLite3ResultSet & result)
{
m_int = result.GetInt(1);
m_str = result.GetString(2);
@@ -143,7 +143,7 @@ wxString FbCollection::GetSeqn(int code, size_t col) return collection->m_seqns[code];
} else {
wxString sql = wxT("SELECT value FROM sequences WHERE id="); sql << code;
- wxSQLite3ResultSet result = collection->m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = collection->m_database.ExecuteQuery(sql);
wxString name = result.NextRow() ? result.GetString(0).Trim(true) : wxString();
collection->m_seqns[code] = name;
return name;
@@ -162,7 +162,7 @@ wxString FbCollection::GetAuth(int code, size_t col) return collection->m_auths[code];
} else {
wxString sql = wxT("SELECT full_name, number FROM authors WHERE id="); sql << code;
- wxSQLite3ResultSet result = collection->m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = collection->m_database.ExecuteQuery(sql);
wxString name = result.NextRow() ? result.GetString(0).Trim(true) : wxString();
collection->m_auths[code] = name;
return name;
@@ -428,7 +428,7 @@ void FbCollection::LoadConfig() FbConfigDatabase database;
database.Open();
wxString sql = wxT("SELECT id, value, text FROM config WHERE id>=100");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
int id = result.GetInt(0);
sm_params[id] = result;
@@ -439,7 +439,7 @@ void FbCollection::LoadConfig() void FbCollection::LoadParams()
{
wxString sql = wxT("SELECT id, value, text FROM params WHERE id<100");
- wxSQLite3ResultSet result = m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = m_database.ExecuteQuery(sql);
while (result.NextRow()) {
int id = result.GetInt(0);
m_params[id] = result;
@@ -461,7 +461,7 @@ int FbCollection::GetParamInt(int param) FbParamHash::const_iterator it = collection->m_params.find(param);
if (it != collection->m_params.end()) return it->second.m_int;
return collection->DefaultInt(param);
- } + }
return 0;
}
}
@@ -503,12 +503,12 @@ void FbCollection::SetParamInt(int param, int value) const wxChar * table = param < 100 ? wxT("params") : wxT("config");
if (value == FbParamItem::DefaultInt(param)) {
wxString sql = wxString::Format( wxT("DELETE FROM %s WHERE id=?"), table);
- wxSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
stmt.Bind(1, param);
stmt.ExecuteUpdate();
} else {
wxString sql = wxString::Format( wxT("INSERT OR REPLACE INTO %s (id, value) VALUES (?,?)"), table);
- wxSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
stmt.Bind(1, param);
stmt.Bind(2, value);
stmt.ExecuteUpdate();
@@ -531,12 +531,12 @@ void FbCollection::SetParamStr(int param, const wxString &value) const wxChar * table = param < 100 ? wxT("params") : wxT("config");
if (value == FbParamItem::DefaultStr(param)) {
wxString sql = wxString::Format( wxT("DELETE FROM %s WHERE id=?"), table);
- wxSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
stmt.Bind(1, param);
stmt.ExecuteUpdate();
} else {
wxString sql = wxString::Format( wxT("INSERT OR REPLACE INTO %s (id, text) VALUES (?,?)"), table);
- wxSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
stmt.Bind(1, param);
stmt.Bind(2, value);
stmt.ExecuteUpdate();
@@ -548,8 +548,8 @@ int FbCollection::DefaultInt(int param) switch (param) {
default: return 0;
}
-}; - +};
+
wxString FbCollection::DefaultStr(int param)
{
switch (param) {
@@ -557,7 +557,7 @@ wxString FbCollection::DefaultStr(int param) return wxT('.');
case DB_DOWNLOAD_HOST:
return wxT("flibusta.net");
- case DB_DOWNLOAD_ADDR: + case DB_DOWNLOAD_ADDR:
if (IsGenesis()) {
return wxT("http://%h/get?nametype=orig&md5=%s");
} else {
@@ -566,14 +566,14 @@ wxString FbCollection::DefaultStr(int param) default:
return wxEmptyString;
}
-}; - -bool FbCollection::IsGenesis() const -{ +};
+
+bool FbCollection::IsGenesis() const
+{
FbParamHash::const_iterator it = sm_params.find(DB_LIBRARY_TYPE);
- if (it == sm_params.end()) return false; + if (it == sm_params.end()) return false;
return it->second.m_str == wxT("GENESIS");
-} +}
void FbCollection::ResetParam(int param)
{
@@ -590,7 +590,7 @@ void FbCollection::ResetParam(int param) const wxChar * table = param < 100 ? wxT("params") : wxT("config");
wxString sql = wxString::Format( wxT("DELETE FROM %s WHERE id=?"), table);
- wxSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = collection->m_database.PrepareStatement(sql);
stmt.Bind(1, param);
stmt.ExecuteUpdate();
}
@@ -612,7 +612,7 @@ void FbCollection::GetDown(wxArrayInt & items) FbCommonDatabase database;
database.AttachConfig();
wxString sql = wxT("SELECT DISTINCT id,download FROM states INNER JOIN books ON books.md5sum=states.md5sum WHERE download<0 ORDER BY 2 DESC");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) downs->Add(result.GetInt(0));
}
WX_APPEND_ARRAY(items, *downs);
diff --git a/sources/MyRuLib/FbCollection.h b/sources/MyRuLib/FbCollection.h index fb556ca5..bccdd27a 100644 --- a/sources/MyRuLib/FbCollection.h +++ b/sources/MyRuLib/FbCollection.h @@ -31,7 +31,7 @@ WX_DECLARE_OBJARRAY(FbBookAuths, FbBookAuthsArray); class FbBookSeqns: public wxObject
{
public:
- FbBookSeqns(int code, wxSQLite3Database &database);
+ FbBookSeqns(int code, FbSQLite3Database &database);
int GetCode() const { return m_code; }
wxString operator[](size_t col) const;
private:
@@ -49,7 +49,7 @@ class FbParamData: public wxObject public:
FbParamData(int val = 0, const wxString &str = wxEmptyString)
: m_int(val), m_str(str) {}
- FbParamData & operator=(wxSQLite3ResultSet & result);
+ FbParamData & operator=(FbSQLite3ResultSet & result);
private:
int m_int;
wxString m_str;
@@ -112,7 +112,7 @@ class FbCollection: public wxObject wxString GetBookSeqns(int code, size_t col);
void LoadParams();
int DefaultInt(int param);
- wxString DefaultStr(int param); + wxString DefaultStr(int param);
bool IsGenesis() const;
private:
static wxCriticalSection sm_section;
diff --git a/sources/MyRuLib/FbDatabase.cpp b/sources/MyRuLib/FbDatabase.cpp index dfe7784e..b223f1a5 100644 --- a/sources/MyRuLib/FbDatabase.cpp +++ b/sources/MyRuLib/FbDatabase.cpp @@ -55,6 +55,37 @@ wxString & MakeUpper(wxString & data) }
//-----------------------------------------------------------------------------
+// FbSQLite3Statement
+//-----------------------------------------------------------------------------
+
+void FbSQLite3Statement::FTS(int index, const wxString& value)
+{
+ wxString result;
+ wxString keywords = wxT("OR AND NOT");
+ wxStringTokenizer tkz(value, wxT(' '), wxTOKEN_STRTOK);
+ while (tkz.HasMoreTokens()) {
+ if (!result.IsEmpty()) result << wxT(' ');
+ wxString word = tkz.GetNextToken();
+ if (keywords.Find(word) != wxNOT_FOUND) {
+ } else if (word.Left(4) == wxT("NEAR")) {
+ } else {
+ word = Lower(word);
+ size_t len = word.Len();
+ for (size_t i = 0; i < len; i++) {
+ if (word[i] == 0x0451) word[i] = 0x0435;
+ }
+ if (word.Right(1) == wxT('"')) {
+ word.insert(word.Len() - 1, wxT('*'));
+ } else {
+ word << wxT('*');
+ }
+ }
+ result << word;
+ }
+ FbSQLite3Statement::Bind(index, result);
+}
+
+//-----------------------------------------------------------------------------
// FbAuthorFunction
//-----------------------------------------------------------------------------
@@ -241,37 +272,6 @@ bool FbSearchFunction::IsFullText(const wxString &text) }
//-----------------------------------------------------------------------------
-// FbSQLite3Statement
-//-----------------------------------------------------------------------------
-
-void FbSQLite3Statement::FTS(int index, const wxString& value)
-{
- wxString result;
- wxString keywords = wxT("OR AND NOT");
- wxStringTokenizer tkz(value, wxT(' '), wxTOKEN_STRTOK);
- while (tkz.HasMoreTokens()) {
- if (!result.IsEmpty()) result << wxT(' ');
- wxString word = tkz.GetNextToken();
- if (keywords.Find(word) != wxNOT_FOUND) {
- } else if (word.Left(4) == wxT("NEAR")) {
- } else {
- word = Lower(word);
- size_t len = word.Len();
- for (size_t i = 0; i < len; i++) {
- if (word[i] == 0x0451) word[i] = 0x0435;
- }
- if (word.Right(1) == wxT('"')) {
- word.insert(word.Len() - 1, wxT('*'));
- } else {
- word << wxT('*');
- }
- }
- result << word;
- }
- wxSQLite3Statement::Bind(index, result);
-}
-
-//-----------------------------------------------------------------------------
// FbAggregateFunction
//-----------------------------------------------------------------------------
@@ -306,7 +306,7 @@ void FbAggregateFunction::Finalize(wxSQLite3FunctionContext& ctx) }
//-----------------------------------------------------------------------------
-// wxSQLite3Collation
+// FbSQLite3Collation
//-----------------------------------------------------------------------------
@@ -417,16 +417,16 @@ int FbDatabase::NewId(const int iParam, int iIncrement) int iValue = 0;
{
wxString sql = wxString::Format(wxT("SELECT value FROM %s WHERE id=?"), table);
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, iParam);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (result.NextRow()) iValue = result.GetInt(0);
}
if (iIncrement) {
iValue += iIncrement;
wxString sql = wxString::Format(wxT("INSERT OR REPLACE INTO %s(value,id)VALUES(?,?)"), table);
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, iValue);
stmt.Bind(2, iParam);
stmt.ExecuteUpdate();
@@ -439,9 +439,9 @@ wxString FbDatabase::GetText(int param) {
const wxChar * table = param < 100 ? wxT("params") : wxT("config");
wxString sql = wxString::Format( wxT("SELECT text FROM %s WHERE id=?"), table);
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, param);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return result.NextRow() ? result.GetString(0) : wxString();
}
@@ -449,7 +449,7 @@ void FbDatabase::SetText(int param, const wxString & text) {
const wxChar * table = param < 100 ? wxT("params") : wxT("config");
wxString sql = wxString::Format(wxT("INSERT OR REPLACE INTO %s(id,text)VALUES(?,?)"), table);
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, param);
stmt.Bind(2, text);
stmt.ExecuteUpdate();
@@ -459,7 +459,7 @@ void FbDatabase::AttachCommon() {
SetCollation(wxT("CYR"), &sm_collation);
wxString sql = wxT("ATTACH ? AS config");
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, wxGetApp().GetLibFile());
stmt.ExecuteUpdate();
}
@@ -467,7 +467,7 @@ void FbDatabase::AttachCommon() void FbDatabase::AttachConfig()
{
wxString sql = wxT("ATTACH ? AS config");
- wxSQLite3Statement stmt = PrepareStatement(sql);
+ FbSQLite3Statement stmt = PrepareStatement(sql);
stmt.Bind(1, GetConfigName());
stmt.ExecuteUpdate();
}
@@ -485,33 +485,33 @@ void FbDatabase::JoinThread(FbThread * thread) wxString FbDatabase::Str(int id, const wxString & sql, const wxString & null)
{
- wxSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
+ FbSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return result.NextRow() ? result.GetString(0, null) : null;
}
wxString FbDatabase::Str(const wxString & id, const wxString & sql, const wxString & null)
{
- wxSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
+ FbSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return result.NextRow() ? result.GetString(0, null) : null;
}
int FbDatabase::Int(int id, const wxString & sql, int null)
{
- wxSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
+ FbSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return result.NextRow() ? result.GetInt(0, null) : null;
}
int FbDatabase::Int(const wxString & id, const wxString & sql, int null)
{
- wxSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
+ FbSQLite3Statement stmt = PrepareStatement(sql + wxT(" LIMIT 1"));
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return result.NextRow() ? result.GetInt(0, null) : null;
}
@@ -570,7 +570,7 @@ void FbMasterDatabase::SetVersion(int iValue) void FbMasterDatabase::UpgradeDatabase(int new_version)
{
- wxSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
+ FbSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
int version = GetVersion();
while ( version < new_version ) {
version++;
@@ -609,7 +609,7 @@ void FbMainDatabase::Open(const wxString& filename, const wxString& key, int fla void FbMainDatabase::CreateDatabase()
{
- wxSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
+ FbSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
/** TABLE authors **/
ExecuteUpdate(fbT("CREATE TABLE authors(id INTEGER PRIMARY KEY,letter,search_name,full_name,first_name,middle_name,last_name,newid,description)"));
@@ -649,46 +649,45 @@ void FbMainDatabase::CreateDatabase() void FbMainDatabase::DoUpgrade(int version)
{
- wxLogNull log;
switch (version) {
case 2: {
} break;
case 3: {
- ExecuteUpdate(fbT("CREATE TABLE IF NOT EXISTS files(id_book INTEGER,id_archive INTEGER,file_name,file_path)"));
- ExecuteUpdate(fbT("CREATE INDEX IF NOT EXISTS files_book ON files(id_book)"));
+ ExecuteSilent(fbT("CREATE TABLE IF NOT EXISTS files(id_book INTEGER,id_archive INTEGER,file_name,file_path)"));
+ ExecuteSilent(fbT("CREATE INDEX IF NOT EXISTS files_book ON files(id_book)"));
} break;
case 4: {
- ExecuteUpdate(fbT("ALTER TABLE books ADD file_path TEXT"));
+ ExecuteSilent(fbT("ALTER TABLE books ADD file_path TEXT"));
} break;
case 5: {
- ExecuteUpdate(fbT("ALTER TABLE books ADD md5sum CHAR(32)"));
- ExecuteUpdate(fbT("CREATE INDEX IF NOT EXISTS book_md5sum ON books(md5sum)"));
+ ExecuteSilent(fbT("ALTER TABLE books ADD md5sum CHAR(32)"));
+ ExecuteSilent(fbT("CREATE INDEX IF NOT EXISTS book_md5sum ON books(md5sum)"));
} break;
case 6: {
- ExecuteUpdate(fbT("ALTER TABLE books ADD created INTEGER"));
- ExecuteUpdate(fbT("CREATE INDEX IF NOT EXISTS book_created ON books(created)"));
+ ExecuteSilent(fbT("ALTER TABLE books ADD created INTEGER"));
+ ExecuteSilent(fbT("CREATE INDEX IF NOT EXISTS book_created ON books(created)"));
} break;
case 7: {
- ExecuteUpdate(fbT("ALTER TABLE authors ADD number INTEGER"));
+ ExecuteSilent(fbT("ALTER TABLE authors ADD number INTEGER"));
} break;
case 8: {
- ExecuteUpdate(fbT("ALTER TABLE sequences ADD number INTEGER"));
+ ExecuteSilent(fbT("ALTER TABLE sequences ADD number INTEGER"));
} break;
case 9: {
- ExecuteUpdate(fbT("ALTER TABLE books ADD lang CHAR(2)"));
- ExecuteUpdate(fbT("ALTER TABLE books ADD year INTEGER"));
+ ExecuteSilent(fbT("ALTER TABLE books ADD lang CHAR(2)"));
+ ExecuteSilent(fbT("ALTER TABLE books ADD year INTEGER"));
} break;
case 11: {
- ExecuteUpdate(fbT("CREATE TABLE IF NOT EXISTS types(file_type varchar(99) PRIMARY KEY,command,convert)"));
+ ExecuteSilent(fbT("CREATE TABLE IF NOT EXISTS types(file_type varchar(99) PRIMARY KEY,command,convert)"));
} break;
case 12: {
@@ -720,7 +719,7 @@ void FbMainDatabase::CreateTableFTS(const wxString & name, const wxString & tabl void FbMainDatabase::CreateFullText(bool force, FbThread * thread)
{
if ( !force && TableExists(wxT("fts_book_content")) ) return;
- wxSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
+ FbSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
CreateTableFTS(wxT("book"), wxT("books"), wxT("title),LOW(description"), wxT(",dscr"));
CreateTableFTS(wxT("auth"), wxT("authors"), wxT("full_name"));
CreateTableFTS(wxT("seqn"), wxT("sequences"), wxT("value"));
@@ -745,7 +744,7 @@ void FbConfigDatabase::Open() void FbConfigDatabase::CreateDatabase()
{
- wxSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
+ FbSQLite3Transaction trans(this, WXSQLITE_TRANSACTION_IMMEDIATE);
/** TABLE params **/
ExecuteUpdate(fbT("CREATE TABLE config(id INTEGER PRIMARY KEY,value INTEGER,text)"));
diff --git a/sources/MyRuLib/FbDatabase.h b/sources/MyRuLib/FbDatabase.h index 444e4980..1a2354d8 100644 --- a/sources/MyRuLib/FbDatabase.h +++ b/sources/MyRuLib/FbDatabase.h @@ -2,7 +2,7 @@ #define __FBDATABASE_H__
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
class FbThread;
@@ -94,7 +94,7 @@ class FbCyrillicCollation: public wxSQLite3Collation void * m_collator;
};
-class FbDatabase: public wxSQLite3Database
+class FbDatabase: public FbSQLite3Database
{
public:
static FbCyrillicCollation sm_collation;
@@ -122,20 +122,12 @@ class FbDatabase: public wxSQLite3Database class FbAutoCommit
{
public:
- FbAutoCommit(wxSQLite3Database & database): m_database(database)
+ FbAutoCommit(FbSQLite3Database & database): m_database(database)
{ m_database.Begin(WXSQLITE_TRANSACTION_DEFERRED); }
virtual ~FbAutoCommit()
{ m_database.Commit(); }
private:
- wxSQLite3Database & m_database;
-};
-
-class FbSQLite3Statement: public wxSQLite3Statement
-{
- public:
- FbSQLite3Statement(const wxSQLite3Statement& statement)
- : wxSQLite3Statement(statement) {}
- void FTS(int index, const wxString& value);
+ FbSQLite3Database & m_database;
};
class FbCommonDatabase: public FbDatabase
diff --git a/sources/MyRuLib/FbDeleteThread.cpp b/sources/MyRuLib/FbDeleteThread.cpp index 55c90e4f..54cf4f68 100644 --- a/sources/MyRuLib/FbDeleteThread.cpp +++ b/sources/MyRuLib/FbDeleteThread.cpp @@ -32,7 +32,7 @@ void FbDeleteThread::DoDelete(FbDatabase &database) {
wxString basepath = wxGetApp().GetLibPath();
wxString sql = wxString::Format(wxT("SELECT id FROM books WHERE books.id IN (%s)"), m_sel.c_str());
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
FbExtractArray(database, result.GetInt(0)).DeleteFiles(basepath);
}
@@ -72,7 +72,7 @@ void FbDeleteThread::DoDelete(FbDatabase &database) {
wxString basepath = wxGetApp().GetLibPath();
wxString sql = wxString::Format(wxT("SELECT id FROM books WHERE books.id IN (%s)"), m_sel.c_str());
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
FbExtractArray(database, result.GetInt(0)).DeleteFiles(basepath);
}
diff --git a/sources/MyRuLib/FbDownloader.cpp b/sources/MyRuLib/FbDownloader.cpp index 42dfe93a..b155729b 100644 --- a/sources/MyRuLib/FbDownloader.cpp +++ b/sources/MyRuLib/FbDownloader.cpp @@ -56,7 +56,7 @@ wxString FbDownloader::GetBook() {
wxString sql = wxT("SELECT md5sum FROM states WHERE download<0 ORDER BY download DESC");
FbLocalDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.NextRow()) return result.GetString(0);
return wxEmptyString;
}
diff --git a/sources/MyRuLib/FbExtractInfo.cpp b/sources/MyRuLib/FbExtractInfo.cpp index 9b351b50..b9534fc2 100644 --- a/sources/MyRuLib/FbExtractInfo.cpp +++ b/sources/MyRuLib/FbExtractInfo.cpp @@ -9,7 +9,7 @@ WX_DEFINE_OBJARRAY(FbExtractArrayBase);
-FbExtractItem::FbExtractItem(wxSQLite3ResultSet & result, int id, const wxString & ext, const wxString & md5):
+FbExtractItem::FbExtractItem(FbSQLite3ResultSet & result, int id, const wxString & ext, const wxString & md5):
id_book(id),
id_archive(result.GetInt(wxT("id_archive"))),
book_name(result.GetString(wxT("file_name"))),
@@ -149,7 +149,7 @@ wxString FbExtractItem::GetURL() const return id_archive ? zip_name : book_name;
}
-FbExtractArray::FbExtractArray(wxSQLite3Database & database, const int id)
+FbExtractArray::FbExtractArray(FbSQLite3Database & database, const int id)
:FbExtractArrayBase(), m_id(id)
{
{
@@ -158,10 +158,10 @@ FbExtractArray::FbExtractArray(wxSQLite3Database & database, const int id) SELECT DISTINCT 1 AS file, id_book, id_archive, file_name, file_path, NULL, NULL FROM files WHERE id_book=? \
ORDER BY file \
");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, id);
stmt.Bind(2, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
wxString filetype;
wxString md5sum;
while ( result.NextRow() ) {
@@ -176,9 +176,9 @@ FbExtractArray::FbExtractArray(wxSQLite3Database & database, const int id) for (size_t i = 0; i<Count(); i++) {
FbExtractItem & item = Item(i);
if (!item.id_archive) continue;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, item.id_archive);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (result.NextRow()) {
item.zip_name = result.GetString(wxT("file_name"));
item.zip_path = result.GetString(wxT("file_path"));
diff --git a/sources/MyRuLib/FbExtractInfo.h b/sources/MyRuLib/FbExtractInfo.h index 6136227e..7bfd43e3 100644 --- a/sources/MyRuLib/FbExtractInfo.h +++ b/sources/MyRuLib/FbExtractInfo.h @@ -4,12 +4,12 @@ #include <wx/wx.h>
#include <wx/filename.h>
#include <wx/arrimpl.cpp>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
class FbExtractItem
{
public:
- FbExtractItem(wxSQLite3ResultSet & result, int id, const wxString & ext, const wxString & md5);
+ FbExtractItem(FbSQLite3ResultSet & result, int id, const wxString & ext, const wxString & md5);
FbExtractItem(const FbExtractItem & item);
public:
wxString FileName(bool bInfoOnly) const;
@@ -40,7 +40,7 @@ class FbExtractArray : public FbExtractArrayBase
{
public:
- FbExtractArray(wxSQLite3Database & database, const int id);
+ FbExtractArray(FbSQLite3Database & database, const int id);
int GetId() const {return m_id; };
void DeleteFiles(const wxString &basepath) const;
private:
diff --git a/sources/MyRuLib/FbFileReader.cpp b/sources/MyRuLib/FbFileReader.cpp index 48be88f2..6e076e78 100644 --- a/sources/MyRuLib/FbFileReader.cpp +++ b/sources/MyRuLib/FbFileReader.cpp @@ -11,7 +11,7 @@ #include <wx/mimetype.h>
#include <wx/stdpaths.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
bool FbTempEraser::sm_erase = true;
@@ -121,7 +121,7 @@ FbFileReader::FbFileReader(int id, bool info) FbCommonDatabase database;
{
wxString sql = wxT("SELECT md5sum, file_type FROM books WHERE id="); sql << id;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.NextRow()) return;
m_md5sum = result.GetString(0).Lower();
m_filetype = result.GetString(1).Lower();
@@ -160,9 +160,9 @@ FbFileReader::FbFileReader(int id, bool info) wxString root = wxGetApp().GetLibPath();
wxString sql = wxT("SELECT DISTINCT id_archive,file_name,file_path,1,id_archive*id_archive FROM books WHERE id=?1 UNION ");
sql << wxT("SELECT DISTINCT id_archive,file_name,file_path,2,id_archive*id_archive FROM files WHERE id_book=?1 ORDER BY 4,5");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
while ( result.NextRow() ) {
bool primary = result.GetInt(3) == 1;
wxString file_name = result.GetString(1);
@@ -170,7 +170,7 @@ FbFileReader::FbFileReader(int id, bool info) if (file_name.IsEmpty()) continue;
if (int arch = result.GetInt(0)) {
wxString sql = wxT("SELECT id,file_name,file_path FROM archives WHERE id="); sql << arch;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.NextRow()) {
wxString arch_name = result.GetString(1);
if (primary) m_message = GetError(file_name, arch_name);
@@ -515,14 +515,14 @@ void FbFileReader::DoDownload() const int folder = - database.NewId(FB_NEW_DOWNLOAD);
{
wxString sql = wxT("UPDATE states SET download=? WHERE md5sum=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, folder);
stmt.Bind(2, md5sum);
ok = stmt.ExecuteUpdate();
}
if (!ok) {
wxString sql = wxT("INSERT INTO states(download, md5sum) VALUES (?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, folder);
stmt.Bind(2, md5sum);
stmt.ExecuteUpdate();
diff --git a/sources/MyRuLib/FbFilterThread.cpp b/sources/MyRuLib/FbFilterThread.cpp index fa839011..9b913172 100644 --- a/sources/MyRuLib/FbFilterThread.cpp +++ b/sources/MyRuLib/FbFilterThread.cpp @@ -19,11 +19,11 @@ bool FbFilterThread::Execute() FbProgressEvent(ID_PROGRESS_PULSE, _("Create filter")).Post(m_owner);
- wxSQLite3Statement stmt = database.PrepareStatement(wxT("ATTACH ? AS f"));
+ FbSQLite3Statement stmt = database.PrepareStatement(wxT("ATTACH ? AS f"));
stmt.Bind(1, m_tempfile);
stmt.ExecuteUpdate();
- wxSQLite3Transaction trans(&database);
+ FbSQLite3Transaction trans(&database);
database.JoinThread(this);
wxArrayString sql;
diff --git a/sources/MyRuLib/FbFrameThread.cpp b/sources/MyRuLib/FbFrameThread.cpp index 99a670c1..da4f444c 100644 --- a/sources/MyRuLib/FbFrameThread.cpp +++ b/sources/MyRuLib/FbFrameThread.cpp @@ -21,11 +21,11 @@ FbFrameDatabase::FbFrameDatabase(FbThread * thread, wxString &filename) // FbFrameThread
//-----------------------------------------------------------------------------
-int FbFrameThread::GetCount(wxSQLite3Database &database, int code)
+int FbFrameThread::GetCount(FbSQLite3Database &database, int code)
{
if (!database.IsOpen()) return wxNOT_FOUND;
wxString sql = wxT("SELECT num FROM numb WHERE key="); sql << code;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
return result.NextRow() ? result.GetInt(0) : 0;
}
@@ -34,7 +34,7 @@ void FbFrameThread::SetCountSQL(const wxString &sql, const FbFilterObj &filter) m_sql = wxString::Format(sql, filter.GetFilterSQL().c_str());
}
-void FbFrameThread::CreateCounter(wxSQLite3Database &database, const wxString &sql)
+void FbFrameThread::CreateCounter(FbSQLite3Database &database, const wxString &sql)
{
if (IsClosed()) return;
database.ExecuteUpdate(wxT("CREATE TABLE numb(key INTEGER PRIMARY KEY, num INTEGER)"));
diff --git a/sources/MyRuLib/FbFrameThread.h b/sources/MyRuLib/FbFrameThread.h index 3ea7709d..557e5f63 100644 --- a/sources/MyRuLib/FbFrameThread.h +++ b/sources/MyRuLib/FbFrameThread.h @@ -2,7 +2,7 @@ #define __FBFRAMETHREAD_H__
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbThread.h"
#include "FbDatabase.h"
#include "FbFilterObj.h"
@@ -16,7 +16,7 @@ public: class FbFrameThread : public FbThread
{
public:
- static int GetCount(wxSQLite3Database &database, int code);
+ static int GetCount(FbSQLite3Database &database, int code);
FbFrameThread(wxEvtHandler * frame, const wxString &counter)
: FbThread(wxTHREAD_JOINABLE), m_frame(frame), m_counter(counter) {}
@@ -28,8 +28,8 @@ public: protected:
static wxString GetOrder(int order, const wxString &standart);
- void CreateCounter(wxSQLite3Database &database, const wxString &sql);
- virtual void MakeModel(wxSQLite3ResultSet &result) {}
+ void CreateCounter(FbSQLite3Database &database, const wxString &sql);
+ virtual void MakeModel(FbSQLite3ResultSet &result) {}
protected:
wxEvtHandler * m_frame;
diff --git a/sources/MyRuLib/FbGenreThread.cpp b/sources/MyRuLib/FbGenreThread.cpp index adf554bf..6a673464 100644 --- a/sources/MyRuLib/FbGenreThread.cpp +++ b/sources/MyRuLib/FbGenreThread.cpp @@ -7,7 +7,7 @@ void * FbGenreThread::Entry() {
FbCommonDatabase database;
database.JoinThread(this);
- wxSQLite3Transaction trans(&database, WXSQLITE_TRANSACTION_EXCLUSIVE);
+ FbSQLite3Transaction trans(&database, WXSQLITE_TRANSACTION_EXCLUSIVE);
wxString msg = _("Rebuild the list of genres");
@@ -21,17 +21,17 @@ void * FbGenreThread::Entry() int pos = 0;
wxString sql = wxT("SELECT id, genres FROM books");
- wxSQLite3ResultSet res = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet res = database.ExecuteQuery(sql);
while (res.NextRow()) {
int id = res.GetInt(0);
wxString genres = res.GetString(1);
int len = genres.Len();
for (int i = 0; i < len; i+=2) {
wxString sql = wxT("INSERT INTO genres(id_book, id_genre) VALUES(?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, id);
stmt.Bind(2, genres.Mid(i, 2));
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
}
FbProgressEvent(ID_PROGRESS_UPDATE, msg, ++pos * 1000 / count).Post();
}
diff --git a/sources/MyRuLib/FbGenres.cpp b/sources/MyRuLib/FbGenres.cpp index 260d0805..df9d7a7b 100644 --- a/sources/MyRuLib/FbGenres.cpp +++ b/sources/MyRuLib/FbGenres.cpp @@ -267,7 +267,7 @@ FbModel * FbGenres::CreateModel(const wxString &code) FbParentData * parent = new FbGenrParentData(*model, root, wxEmptyString, _("Other"));
new FbGenrChildData(*model, parent, wxEmptyString, _("No genre"));
- if (not_found) model->m_position = model->GetRowCount();
+ if (not_found) model->m_position = model->GetRowCount();
return model;
}
diff --git a/sources/MyRuLib/FbGenres.h b/sources/MyRuLib/FbGenres.h index ea186325..58a6534d 100644 --- a/sources/MyRuLib/FbGenres.h +++ b/sources/MyRuLib/FbGenres.h @@ -2,7 +2,7 @@ #define FBGENRES_H
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "controls/FbTreeModel.h"
#include "FbStringHash.h"
diff --git a/sources/MyRuLib/FbImportCtx.cpp b/sources/MyRuLib/FbImportCtx.cpp index e08ffb95..2611c242 100644 --- a/sources/MyRuLib/FbImportCtx.cpp +++ b/sources/MyRuLib/FbImportCtx.cpp @@ -2,6 +2,7 @@ #include "FbConst.h"
#include <wx/arrimpl.cpp>
+#include <wx/log.h>
WX_DEFINE_OBJARRAY(SequenceArray);
@@ -16,14 +17,14 @@ wxString AuthorItem::GetFullName() }
void AuthorItem::Convert(FbDatabase & database)
-{ +{
last = last.Trim(false).Trim(true);
first = first.Trim(false).Trim(true);
middle = middle.Trim(false).Trim(true);
if (!Find(database)) Save(database);
}
-void AuthorItem::Bind(wxSQLite3Statement &stmt, int param, const wxString &value)
+void AuthorItem::Bind(FbSQLite3Statement &stmt, int param, const wxString &value)
{
if (value.IsEmpty()) {
const char empty = 0;
@@ -35,21 +36,21 @@ void AuthorItem::Bind(wxSQLite3Statement &stmt, int param, const wxString &value int AuthorItem::Find(FbDatabase & database)
{
wxString sql = wxT("SELECT id FROM authors WHERE first_name=? AND middle_name=? AND last_name=? AND id<>?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
Bind(stmt, 1, first);
Bind(stmt, 2, middle);
Bind(stmt, 3, last);
stmt.Bind(4, m_id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
return m_id = result.NextRow() ? result.GetInt(0) : 0;
}
int AuthorItem::Load(FbDatabase & database)
{
wxString sql = wxT("SELECT first_name, middle_name, last_name FROM authors WHERE id=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if ( result.NextRow() ) {
first = result.GetString(0);
middle = result.GetString(1);
@@ -76,7 +77,7 @@ int AuthorItem::Save(FbDatabase & database) }
{
- wxSQLite3Statement stmt = database.PrepareStatement(sql_data);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql_data);
Bind(stmt, 1, full_name);
Bind(stmt, 2, full_name);
Bind(stmt, 3, first);
@@ -87,7 +88,7 @@ int AuthorItem::Save(FbDatabase & database) }
{
- wxSQLite3Statement stmt = database.PrepareStatement(sql_fts3);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql_fts3);
stmt.Bind(1, full_name);
stmt.Bind(2, m_id);
stmt.ExecuteUpdate();
@@ -98,7 +99,7 @@ int AuthorItem::Save(FbDatabase & database) int SequenceItem::Convert(FbDatabase & database)
{
- m_name = m_name.Trim(false).Trim(true); + m_name = m_name.Trim(false).Trim(true);
if (m_name.IsEmpty()) return m_id = 0;
@@ -107,7 +108,7 @@ int SequenceItem::Convert(FbDatabase & database) m_id = - database.NewId(DB_NEW_SEQUENCE);
{
wxString sql = wxT("INSERT INTO sequences(value,id) VALUES (?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_name);
stmt.Bind(2, m_id);
stmt.ExecuteUpdate();
@@ -115,7 +116,7 @@ int SequenceItem::Convert(FbDatabase & database) {
wxString sql = wxT("INSERT INTO fts_seqn(content, docid) VALUES(LOW(?),?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_name);
stmt.Bind(2, m_id);
stmt.ExecuteUpdate();
diff --git a/sources/MyRuLib/FbImportCtx.h b/sources/MyRuLib/FbImportCtx.h index 674ba553..f0d61c76 100644 --- a/sources/MyRuLib/FbImportCtx.h +++ b/sources/MyRuLib/FbImportCtx.h @@ -22,7 +22,7 @@ class AuthorItem wxString last;
private:
void SetNames();
- void Bind(wxSQLite3Statement &stmt, int param, const wxString &value);
+ void Bind(FbSQLite3Statement &stmt, int param, const wxString &value);
private:
int m_id;
};
diff --git a/sources/MyRuLib/FbImportReader.cpp b/sources/MyRuLib/FbImportReader.cpp index 628c1404..6e09d5bc 100644 --- a/sources/MyRuLib/FbImportReader.cpp +++ b/sources/MyRuLib/FbImportReader.cpp @@ -88,7 +88,7 @@ int FbImportZip::Save(bool progress) {
wxLongLong count = m_zip.GetTotalEntries();
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_filename);
stmt.Bind(2, m_filepath);
stmt.Bind(3, (wxLongLong)m_filesize);
@@ -415,7 +415,7 @@ bool FbImportBook::AppendBook() }
prior = author;
wxString sql = wxT("INSERT INTO books(id,id_archive,id_author,title,genres,file_name,file_path,file_size,file_type,lang,description,created,md5sum) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, id_book);
stmt.Bind(2, m_archive);
stmt.Bind(3, author);
@@ -436,7 +436,7 @@ bool FbImportBook::AppendBook() for (size_t i = 0; i < sequences.Count(); i++) {
const SequenceItem & sequence = sequences[i];
wxString sql = wxT("INSERT INTO bookseq(id_book,id_seq,number) VALUES (?,?,?)");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, id_book);
stmt.Bind(2, sequence.GetId());
stmt.Bind(3, sequence.GetNumber());
@@ -445,7 +445,7 @@ bool FbImportBook::AppendBook() {
wxString sql = wxT("INSERT INTO fts_book(content,docid) VALUES(LOW(?),?)");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_parser->m_title);
stmt.Bind(2, id_book);
ok = stmt.ExecuteUpdate() && ok;
@@ -456,7 +456,7 @@ bool FbImportBook::AppendBook() size_t count = genres.Length() / 2;
for (size_t i = 0; i < count; i++) {
wxString sql = wxT("INSERT INTO genres(id_book, id_genre) VALUES(?,?)");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, id_book);
stmt.Bind(2, genres.Mid(i*2, 2));
ok = stmt.ExecuteUpdate() && ok;
@@ -468,10 +468,10 @@ bool FbImportBook::AppendBook() bool FbImportBook::AppendFile(int id_book)
{
wxString sql = wxT("SELECT file_name FROM books WHERE id=?1 AND id_archive=?2 UNION SELECT file_name FROM files WHERE id_book=?1 AND id_archive=?2");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, id_book);
stmt.Bind(2, m_archive);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
while (result.NextRow()) {
if (result.GetString(0) == m_filename) {
wxLogWarning(_("File already exists %s"), m_message.c_str());
diff --git a/sources/MyRuLib/FbImportThread.h b/sources/MyRuLib/FbImportThread.h index 53f27236..5afa465f 100644 --- a/sources/MyRuLib/FbImportThread.h +++ b/sources/MyRuLib/FbImportThread.h @@ -2,9 +2,9 @@ #define __FBIMPORTTHREAD_H__
#include <wx/wx.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include <wx/zipstrm.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbThread.h"
#include "FbDatabase.h"
diff --git a/sources/MyRuLib/FbInternetBook.cpp b/sources/MyRuLib/FbInternetBook.cpp index 073822e7..efb51362 100644 --- a/sources/MyRuLib/FbInternetBook.cpp +++ b/sources/MyRuLib/FbInternetBook.cpp @@ -24,18 +24,18 @@ wxString FbInternetBook::GetURL(const int id, const wxString& md5sum) wxChar ch = addr[i];
if (param) {
switch (ch) {
- case wxT('h'):
- result += FbParams(DB_DOWNLOAD_HOST).Str();
+ case wxT('h'):
+ result += FbParams(DB_DOWNLOAD_HOST).Str();
break;
- case wxT('i'):
- case wxT('n'):
- result << id;
+ case wxT('i'):
+ case wxT('n'):
+ result << id;
break;
- case wxT('m'):
- case wxT('s'):
- result += md5sum.IsEmpty() ? FbCommonDatabase().GetMd5(id) : md5sum;
+ case wxT('m'):
+ case wxT('s'):
+ result += md5sum.IsEmpty() ? FbCommonDatabase().GetMd5(id) : md5sum;
break;
- default:
+ default:
result += ch;
}
param = false;
@@ -114,9 +114,9 @@ FbInternetBook::FbInternetBook(FbDownloader * owner, const wxString& md5sum) wxString sql = wxT("SELECT id, file_type FROM books WHERE md5sum=? AND id>0");
FbCommonDatabase database;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, md5sum);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if ( result.NextRow() ) {
m_id = result.GetInt(0);
m_filetype = result.GetString(1);
@@ -183,7 +183,7 @@ bool FbInternetBook::CheckFile() md5_starts( &md5 );
while (true) {
size_t count = in.Read(buf, BUFSIZE).LastRead();
- if ( count == 0) break;
+ if ( count == 0) break;
md5_update( &md5, buf, (int) count );
if ( pos == 0 && count > 1 && memcmp(buf, "PK", 2) == 0) zipped = true;
pos += count;
@@ -253,7 +253,7 @@ void FbInternetBook::SaveFile(const bool success) int code = success ? FbDateTime::Today().Code() : 1;
FbLocalDatabase database;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, code);
stmt.Bind(2, m_md5sum);
stmt.ExecuteUpdate();
diff --git a/sources/MyRuLib/FbMasterInfo.cpp b/sources/MyRuLib/FbMasterInfo.cpp index 4e46f4d7..c26fe391 100644 --- a/sources/MyRuLib/FbMasterInfo.cpp +++ b/sources/MyRuLib/FbMasterInfo.cpp @@ -37,7 +37,7 @@ void * FbMasterInfoBase::Execute(wxEvtHandler * owner, FbThread * thread, const FbSQLite3Statement stmt = database.PrepareStatement(sql);
Bind(stmt);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (!result.IsOk()) return NULL;
switch (GetMode()) {
@@ -47,7 +47,7 @@ void * FbMasterInfoBase::Execute(wxEvtHandler * owner, FbThread * thread, const return NULL;
}
-void FbMasterInfoBase::MakeList(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const
+void FbMasterInfoBase::MakeList(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const
{
wxWindowID id = ID_MODEL_CREATE;
size_t length = fbLIST_CACHE_SIZE;
@@ -71,7 +71,7 @@ void FbMasterInfoBase::MakeList(wxEvtHandler *owner, FbThread * thread, wxSQLite FbCountEvent(ID_BOOKS_COUNT, *this, count).Post(owner);
}
-void FbMasterInfoBase::MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const
+void FbMasterInfoBase::MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const
{
FbBookTreeModel * model = new FbBookTreeModel;
FbParentData * root = new FbParentData(*model, NULL);
@@ -203,12 +203,12 @@ wxString FbMasterInfoBase::GetOrderFields() const return result;
}
-wxString FbMasterInfoBase::GetListSQL(wxSQLite3Database &database) const
+wxString FbMasterInfoBase::GetListSQL(FbSQLite3Database &database) const
{
return wxT("SELECT DISTINCT books.id FROM books %s WHERE %s GROUP BY books.id ORDER BY %s");
}
-wxString FbMasterInfoBase::GetTreeSQL(wxSQLite3Database &database) const
+wxString FbMasterInfoBase::GetTreeSQL(FbSQLite3Database &database) const
{
return wxT("SELECT DISTINCT books.id_author, bookseq.id_seq, books.id, bookseq.number FROM books LEFT JOIN authors ON authors.id=books.id_author LEFT JOIN bookseq ON bookseq.id_book=books.id %s WHERE %s ORDER BY (CASE WHEN books.id_author=0 THEN 0 ELSE 1 END), authors.full_name COLLATE CYR, books.id_author, bookseq.id_seq, %s");
}
diff --git a/sources/MyRuLib/FbMasterInfo.h b/sources/MyRuLib/FbMasterInfo.h index 02d32cc3..2156de0b 100644 --- a/sources/MyRuLib/FbMasterInfo.h +++ b/sources/MyRuLib/FbMasterInfo.h @@ -29,15 +29,15 @@ class FbMasterInfoBase: public wxObject virtual FbMasterInfoBase * Clone() const = 0;
virtual bool operator==(const FbMasterInfoBase & info) = 0;
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const = 0;
+ virtual wxString GetWhere(FbSQLite3Database &database) const = 0;
virtual void Bind(FbSQLite3Statement &stmt) const {}
virtual wxString GetOrderTable() const;
virtual wxString GetOrderColumn() const;
virtual wxString GetOrderFields() const;
- virtual wxString GetListSQL(wxSQLite3Database &database) const;
- virtual wxString GetTreeSQL(wxSQLite3Database &database) const;
- virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const;
- virtual void MakeList(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const;
+ virtual wxString GetListSQL(FbSQLite3Database &database) const;
+ virtual wxString GetTreeSQL(FbSQLite3Database &database) const;
+ virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const;
+ virtual void MakeList(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const;
void SendTree(wxEvtHandler *owner, FbThread * thread, FbBookTreeModel * model) const;
wxString FormatSQL(const wxString &sql, const wxString &cond, const FbFilterObj &filter) const;
protected:
diff --git a/sources/MyRuLib/FbMasterTypes.cpp b/sources/MyRuLib/FbMasterTypes.cpp index bac8496a..8c01b92c 100644 --- a/sources/MyRuLib/FbMasterTypes.cpp +++ b/sources/MyRuLib/FbMasterTypes.cpp @@ -23,7 +23,7 @@ FbMasterInfo FbDateDayData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterDateInfo, FbMasterInfoBase)
-wxString FbMasterDateInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterDateInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.created=?");
}
@@ -52,12 +52,12 @@ wxString FbMasterAuthInfo::GetOrderTable() const return FbMasterInfoBase::GetOrderTable();
}
-wxString FbMasterAuthInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterAuthInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.id_author=?");
}
-wxString FbMasterAuthInfo::GetTreeSQL(wxSQLite3Database &database) const
+wxString FbMasterAuthInfo::GetTreeSQL(FbSQLite3Database &database) const
{
return wxT("SELECT DISTINCT id_seq, books.id, bookseq.number FROM books LEFT JOIN bookseq ON bookseq.id_book=books.id %s WHERE %s ORDER BY id_seq, %s");
}
@@ -67,7 +67,7 @@ void FbMasterAuthInfo::Bind(FbSQLite3Statement &stmt) const stmt.Bind(1, m_id);
}
-void FbMasterAuthInfo::MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const
+void FbMasterAuthInfo::MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const
{
FbBookTreeModel * model = new FbBookTreeModel;
FbAuthParentData * root = new FbAuthParentData(*model, NULL, m_id);
@@ -107,7 +107,7 @@ FbMasterInfo FbSeqnListData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterSeqnInfo, FbMasterInfoBase)
-void FbMasterSeqnInfo::MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const
+void FbMasterSeqnInfo::MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const
{
FbBookTreeModel * model = new FbBookTreeModel;
FbSeqnParentData * root = new FbSeqnParentData(*model, NULL, m_id);
@@ -125,12 +125,12 @@ void FbMasterSeqnInfo::MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite SendTree(owner, thread, model);
}
-wxString FbMasterSeqnInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterSeqnInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.id IN (SELECT id_book FROM bookseq WHERE bookseq.id_seq=?)");
}
-wxString FbMasterSeqnInfo::GetTreeSQL(wxSQLite3Database &database) const
+wxString FbMasterSeqnInfo::GetTreeSQL(FbSQLite3Database &database) const
{
return wxT("SELECT DISTINCT books.id_author, books.id, bookseq.number FROM bookseq INNER JOIN books ON bookseq.id_book=books.id LEFT JOIN authors ON authors.id=books.id_author %s WHERE %s ORDER BY (CASE WHEN books.id_author=0 THEN 0 ELSE 1 END), authors.full_name COLLATE CYR, books.id_author, %s");
}
@@ -151,7 +151,7 @@ FbMasterInfo FbGenrChildData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterGenrInfo, FbMasterInfoBase)
-wxString FbMasterGenrInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterGenrInfo::GetWhere(FbSQLite3Database &database) const
{
if (m_id.IsEmpty()) return wxT("books.genres=?");
return wxT("books.id IN (SELECT id_book FROM genres WHERE genres.id_genre=?)");
@@ -173,7 +173,7 @@ FbMasterInfo FbDownListData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterDownInfo, FbMasterInfoBase)
-wxString FbMasterDownInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterDownInfo::GetWhere(FbSQLite3Database &database) const
{
wxString sql = wxT("books.md5sum IN (SELECT md5sum FROM states WHERE download");
switch (m_id) {
@@ -199,7 +199,7 @@ void * FbMasterDownInfo::GetDownloads(wxEvtHandler * owner, FbThread * thread) FbCommonDatabase database;
database.AttachConfig();
wxString sql = wxT("SELECT DISTINCT id,download FROM states INNER JOIN books ON books.md5sum=states.md5sum WHERE download<0 ORDER BY 2 DESC");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) items.Add(result.GetInt(0));
FbArrayEvent(ID_MODEL_CREATE, items, GetIndex()).Post(owner);
FbCountEvent(ID_BOOKS_COUNT, *this, items.Count()).Post(owner);
@@ -223,7 +223,7 @@ FbMasterInfo FbCommChildData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterCommInfo, FbMasterInfoBase)
-wxString FbMasterCommInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterCommInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.md5sum IN (SELECT DISTINCT md5sum FROM comments)");
}
@@ -243,7 +243,7 @@ FbMasterInfo FbRateChildData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterRateInfo, FbMasterInfoBase)
-wxString FbMasterRateInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterRateInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.md5sum IN (SELECT md5sum FROM states WHERE rating=?)");
}
@@ -264,7 +264,7 @@ FbMasterInfo FbFolderChildData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterFldrInfo, FbMasterInfoBase)
-wxString FbMasterFldrInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterFldrInfo::GetWhere(FbSQLite3Database &database) const
{
return wxT("books.md5sum IN (SELECT md5sum FROM favorites WHERE id_folder=?)");
}
@@ -280,7 +280,7 @@ void FbMasterFldrInfo::Bind(FbSQLite3Statement &stmt) const IMPLEMENT_CLASS(FbMasterFindInfo, FbMasterInfoBase)
-wxString FbMasterFindInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterFindInfo::GetWhere(FbSQLite3Database &database) const
{
if (m_full) {
wxString sql = wxT("books.id IN (SELECT docid FROM fts_book WHERE fts_book.content MATCH ?)");
@@ -344,7 +344,7 @@ bool FbMasterFindInfo::DoFind(wxEvtHandler * owner, FbThread * thread, const FbF FbSQLite3Statement stmt = database.PrepareStatement(sql);
if (m_full) Bind(stmt);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (!result.IsOk()) return false;
bool ok = !result.Eof();
@@ -369,7 +369,7 @@ FbMasterInfo FbClssModelData::GetInfo(FbModel & model) const IMPLEMENT_CLASS(FbMasterClssInfo, FbMasterInfoBase)
-wxString FbMasterClssInfo::GetWhere(wxSQLite3Database &database) const
+wxString FbMasterClssInfo::GetWhere(FbSQLite3Database &database) const
{
return m_sql;
}
diff --git a/sources/MyRuLib/FbMasterTypes.h b/sources/MyRuLib/FbMasterTypes.h index e8bce17b..f45076ce 100644 --- a/sources/MyRuLib/FbMasterTypes.h +++ b/sources/MyRuLib/FbMasterTypes.h @@ -20,11 +20,11 @@ class FbMasterAuthInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
- virtual wxString GetTreeSQL(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
+ virtual wxString GetTreeSQL(FbSQLite3Database &database) const;
virtual wxString GetOrderTable() const;
virtual void Bind(FbSQLite3Statement &stmt) const;
- virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const;
+ virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const;
private:
int m_id;
DECLARE_CLASS(FbMasterAuthInfo);
@@ -46,10 +46,10 @@ class FbMasterSeqnInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
- virtual wxString GetTreeSQL(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
+ virtual wxString GetTreeSQL(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
- virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, wxSQLite3ResultSet &result) const;
+ virtual void MakeTree(wxEvtHandler *owner, FbThread * thread, FbSQLite3ResultSet &result) const;
private:
int m_id;
DECLARE_CLASS(FbMasterSeqnInfo);
@@ -71,7 +71,7 @@ class FbMasterGenrInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
const wxString m_id;
@@ -100,7 +100,7 @@ class FbMasterDownInfo: public FbMasterInfoBase }
virtual void * Execute(wxEvtHandler * owner, FbThread * thread, const FbFilterObj &filter);
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
void * GetDownloads(wxEvtHandler * owner, FbThread * thread);
private:
@@ -124,7 +124,7 @@ class FbMasterDateInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
int m_id;
@@ -147,7 +147,7 @@ class FbMasterFldrInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
int m_id;
@@ -167,7 +167,7 @@ class FbMasterCommInfo: public FbMasterInfoBase return IsSameAs(info);
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
DECLARE_CLASS(FbMasterCommInfo);
@@ -189,7 +189,7 @@ class FbMasterRateInfo: public FbMasterInfoBase return data && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
int m_id;
@@ -211,7 +211,7 @@ class FbMasterFindInfo: public FbMasterInfoBase }
protected:
virtual void * Execute(wxEvtHandler * owner, FbThread * thread, const FbFilterObj &filter);
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
bool DoFind(wxEvtHandler * owner, FbThread * thread, const FbFilterObj &filter);
private:
@@ -238,7 +238,7 @@ class FbMasterClssInfo: public FbMasterInfoBase return data && data->m_sql == m_sql && data->m_id == m_id;
}
protected:
- virtual wxString GetWhere(wxSQLite3Database &database) const;
+ virtual wxString GetWhere(FbSQLite3Database &database) const;
virtual void Bind(FbSQLite3Statement &stmt) const;
private:
const wxString m_sql;
diff --git a/sources/MyRuLib/FbMenu.cpp b/sources/MyRuLib/FbMenu.cpp index e14b699f..339d8b80 100644 --- a/sources/MyRuLib/FbMenu.cpp +++ b/sources/MyRuLib/FbMenu.cpp @@ -88,7 +88,7 @@ wxMenuItem * FbMenuRefs::Create(wxMenu * menu) FbMenu * submenu = NULL;
wxString sql = wxT("SELECT id, title FROM tables ORDER BY 2");
- wxSQLite3ResultSet res = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet res = database.ExecuteQuery(sql);
while (res.NextRow()) {
if (!submenu) submenu = new FbMenuRefs();
submenu->AppendSub(FbMenu::CLSS, res.GetInt(0), res.GetString(1));
diff --git a/sources/MyRuLib/FbParams.h b/sources/MyRuLib/FbParams.h index 67577056..d48554fb 100644 --- a/sources/MyRuLib/FbParams.h +++ b/sources/MyRuLib/FbParams.h @@ -3,7 +3,7 @@ #include <wx/wx.h>
#include <wx/arrimpl.cpp>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbDatabase.h"
diff --git a/sources/MyRuLib/FbUpdateThread.cpp b/sources/MyRuLib/FbUpdateThread.cpp index b097ad15..e4db8662 100644 --- a/sources/MyRuLib/FbUpdateThread.cpp +++ b/sources/MyRuLib/FbUpdateThread.cpp @@ -92,7 +92,7 @@ int FbUpdateItem::DoUpdate() {
{
wxString sql = wxT("ATTACH ? AS upd");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_dataname);
stmt.ExecuteUpdate();
}
@@ -106,7 +106,7 @@ int FbUpdateItem::DoUpdate() return 0;
}
- wxSQLite3Transaction trans(&m_database, WXSQLITE_TRANSACTION_EXCLUSIVE);
+ FbSQLite3Transaction trans(&m_database, WXSQLITE_TRANSACTION_EXCLUSIVE);
ExecDelete();
ExecInsert();
@@ -122,7 +122,7 @@ int FbUpdateItem::DoUpdate() void FbUpdateItem::CalcCount()
{
wxString sql = wxT("SELECT COUNT(DISTINCT id) FROM upd.books");
- wxSQLite3ResultSet result = m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = m_database.ExecuteQuery(sql);
if (result.NextRow()) wxLogWarning(_("Loaded new %d books"), result.GetInt(0));
}
diff --git a/sources/MyRuLib/FbViewData.cpp b/sources/MyRuLib/FbViewData.cpp index 07503b87..f5b55007 100644 --- a/sources/MyRuLib/FbViewData.cpp +++ b/sources/MyRuLib/FbViewData.cpp @@ -129,9 +129,9 @@ wxString FbViewData::GetComments(const FbViewContext &ctx, const FbCacheBook &bo wxString sql = wxT("SELECT id, posted, caption, comment FROM comments WHERE md5sum=? ORDER BY id");
FbLocalDatabase database;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, md5sum);
- wxSQLite3ResultSet res = stmt.ExecuteQuery();
+ FbSQLite3ResultSet res = stmt.ExecuteQuery();
wxString html;
html += wxT("<TABLE>");
diff --git a/sources/MyRuLib/FbViewThread.cpp b/sources/MyRuLib/FbViewThread.cpp index 37645770..a6951f2c 100644 --- a/sources/MyRuLib/FbViewThread.cpp +++ b/sources/MyRuLib/FbViewThread.cpp @@ -120,9 +120,9 @@ wxString FbViewThread::GetFiles(FbDatabase & database) wxString html;
wxString sql = wxT("SELECT DISTINCT id_archive,file_name,1,id_archive*id_archive,file_type,md5sum FROM books WHERE id=?1 UNION ");
sql << wxT("SELECT DISTINCT id_archive,file_name,2,id_archive*id_archive,NULL,NULL FROM files WHERE id_book=?1 ORDER BY 3,4");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
while (result.NextRow()) {
html << wxT("<p>");
if (id > 0 && result.GetInt(2) == 1) {
@@ -139,7 +139,7 @@ wxString FbViewThread::GetFiles(FbDatabase & database) wxString trg = result.GetString(1);
wxString str = Shorten(result.GetString(1), maxLength);
wxString sql = wxT("SELECT file_name FROM archives WHERE id="); sql << arch;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.NextRow()) {
url = wxT("book:") + result.GetString(0);
wxString str = Shorten(result.GetString(0), maxLength);
@@ -163,7 +163,7 @@ wxString FbViewThread::GetSeqns(FbDatabase & database) wxString html;
wxString sql = wxT("select s.value, b.number FROM bookseq b INNER JOIN sequences s ON s.id=b.id_seq WHERE b.id_book=");
sql << m_view.GetCode();
- wxSQLite3ResultSet res = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet res = database.ExecuteQuery(sql);
while (res.NextRow()) {
wxString numb = res.GetString(1);
html << wxT("<br>") << wxT("<font size=3>") << res.GetString(0);
diff --git a/sources/MyRuLib/dialogs/FbAuthorDlg.cpp b/sources/MyRuLib/dialogs/FbAuthorDlg.cpp index 4536572e..7b89ae10 100644 --- a/sources/MyRuLib/dialogs/FbAuthorDlg.cpp +++ b/sources/MyRuLib/dialogs/FbAuthorDlg.cpp @@ -187,11 +187,11 @@ void FbAuthorModifyDlg::DoModify() void FbAuthorModifyDlg::ReplaceAuthor(int old_id, int new_id)
{
FbCommonDatabase m_database;
- wxSQLite3Transaction trans(&m_database);
+ FbSQLite3Transaction trans(&m_database);
{
wxString sql = wxT("UPDATE books SET id_author=?1 WHERE id_author=?2 AND NOT (id IN (SELECT id FROM books WHERE id_author=?1))");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, new_id);
stmt.Bind(2, old_id);
stmt.ExecuteUpdate();
@@ -199,21 +199,21 @@ void FbAuthorModifyDlg::ReplaceAuthor(int old_id, int new_id) {
wxString sql = wxT("DELETE FROM books WHERE id_author=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, old_id);
stmt.ExecuteUpdate();
}
{
wxString sql = wxT("DELETE FROM authors WHERE id=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, old_id);
stmt.ExecuteUpdate();
}
{
wxString sql = wxT("DELETE FROM fts_auth WHERE docid=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, old_id);
stmt.ExecuteUpdate();
}
@@ -321,9 +321,9 @@ FbAuthorReplaceDlg::~FbAuthorReplaceDlg() bool FbAuthorReplaceDlg::Load()
{
wxString sql = wxT("SELECT full_name, last_name FROM authors WHERE id=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_id);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (result.NextRow()) {
m_Text->SetValue(result.GetAsString(0));
diff --git a/sources/MyRuLib/dialogs/FbConfigDlg.cpp b/sources/MyRuLib/dialogs/FbConfigDlg.cpp index a6f37724..ea811647 100644 --- a/sources/MyRuLib/dialogs/FbConfigDlg.cpp +++ b/sources/MyRuLib/dialogs/FbConfigDlg.cpp @@ -259,10 +259,10 @@ void * FbConfigDlg::TypeThread::Entry() return NULL;
}
-void FbConfigDlg::TypeThread::LoadTypes(wxSQLite3Database &database)
+void FbConfigDlg::TypeThread::LoadTypes(FbSQLite3Database &database)
{
wxString sql = GetCommandSQL(wxT("main"));
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.IsOk()) return;
FbListStore * model = new FbListStore;
while ( result.NextRow() ) {
@@ -285,7 +285,7 @@ void * FbConfigDlg::RefsThread::Entry() return NULL;
}
-void FbConfigDlg::RefsThread::LoadTables(wxSQLite3Database &database)
+void FbConfigDlg::RefsThread::LoadTables(FbSQLite3Database &database)
{
if (!database.TableExists(wxT("tables"))) {
FbModelEvent(ID_TYPE_LIST, new FbListStore).Post(m_frame);
@@ -294,7 +294,7 @@ void FbConfigDlg::RefsThread::LoadTables(wxSQLite3Database &database) wxString sql = wxString::Format(wxT("SELECT id, %s from tables ORDER BY 2"), GetFields().c_str());
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.IsOk()) return;
FbListStore * model = new FbListStore;
while ( result.NextRow() ) {
@@ -413,7 +413,7 @@ void FbConfigDlg::PanelType::OnActivated( wxTreeEvent & event ) OnModify(cmdEvent);
}
-void FbConfigDlg::PanelType::Save(wxSQLite3Database &database)
+void FbConfigDlg::PanelType::Save(FbSQLite3Database &database)
{
FbListStore * model = wxDynamicCast(m_treeview.GetModel(), FbListStore);
if (!model) return;
@@ -421,7 +421,7 @@ void FbConfigDlg::PanelType::Save(wxSQLite3Database &database) size_t count = m_deleted.Count();
for (size_t i = 0; i < count; i++) {
wxString sql = wxT("DELETE FROM types WHERE file_type=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_deleted[i]);
stmt.ExecuteUpdate();
}
@@ -432,7 +432,7 @@ void FbConfigDlg::PanelType::Save(wxSQLite3Database &database) TypeData * data = wxDynamicCast(&item, TypeData);
if (data && data->IsModified()) {
wxString sql = wxT("INSERT OR REPLACE INTO types(file_type, command) values(?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, data->GetValue(*model, 0));
stmt.Bind(2, data->GetValue(*model, 1));
stmt.ExecuteUpdate();
@@ -597,7 +597,7 @@ void FbConfigDlg::PanelRefs::OnActivated( wxTreeEvent & event ) OnModify(cmdEvent);
}
-void FbConfigDlg::PanelRefs::Save(wxSQLite3Database &database)
+void FbConfigDlg::PanelRefs::Save(FbSQLite3Database &database)
{
FbListStore * model = wxDynamicCast(m_treeview.GetModel(), FbListStore);
if (!model) return;
@@ -611,7 +611,7 @@ void FbConfigDlg::PanelRefs::Save(wxSQLite3Database &database) size_t count = m_deleted.Count();
for (size_t i = 0; i < count; i++) {
wxString sql = wxT("DELETE FROM tables WHERE id=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_deleted[i]);
stmt.ExecuteUpdate();
}
@@ -643,7 +643,7 @@ void FbConfigDlg::PanelRefs::Save(wxSQLite3Database &database) int code = data->GetCode();
wxString sql = code ? update : insert;
if (code) sql << code;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
data->Assign(stmt);
stmt.ExecuteUpdate();
}
@@ -656,7 +656,7 @@ void FbConfigDlg::PanelRefs::Save(wxSQLite3Database &database) IMPLEMENT_CLASS(FbConfigDlg::TypeData, FbModelData)
-FbConfigDlg::TypeData::TypeData(wxSQLite3ResultSet &result)
+FbConfigDlg::TypeData::TypeData(FbSQLite3ResultSet &result)
: m_type(result.GetString(0)), m_command(result.GetString(1)), m_modified(false)
{
}
@@ -677,7 +677,7 @@ wxString FbConfigDlg::TypeData::GetValue(FbModel & model, size_t col) const IMPLEMENT_CLASS(FbConfigDlg::RefsData, FbModelData)
-FbConfigDlg::RefsData::RefsData(wxSQLite3ResultSet &result)
+FbConfigDlg::RefsData::RefsData(FbSQLite3ResultSet &result)
: m_code(result.GetInt(0)), m_modified(false)
{
size_t count = result.GetColumnCount();
@@ -696,7 +696,7 @@ wxString FbConfigDlg::RefsData::GetValue(FbModel & model, size_t col) const return col < m_values.Count() ? m_values[col] : wxString();
}
-int FbConfigDlg::RefsData::Assign(wxSQLite3Statement & stmt)
+int FbConfigDlg::RefsData::Assign(FbSQLite3Statement & stmt)
{
size_t count = m_values.Count();
for (size_t i = 0; i < count; i++) {
diff --git a/sources/MyRuLib/dialogs/FbConfigDlg.h b/sources/MyRuLib/dialogs/FbConfigDlg.h index e415910c..932ac6d8 100644 --- a/sources/MyRuLib/dialogs/FbConfigDlg.h +++ b/sources/MyRuLib/dialogs/FbConfigDlg.h @@ -13,10 +13,10 @@ #include "FbWindow.h"
#include "FbDatabase.h"
-class FbDirectoryDlg: public FbDialog
+class FbDirectoryDlg: public FbDialog
{
public:
- FbDirectoryDlg( wxWindow * parent, const wxString& title );
+ FbDirectoryDlg( wxWindow * parent, const wxString& title );
void Set(const FbModelItem & item);
void Get(FbModelItem & item);
@@ -85,10 +85,10 @@ class FbConfigDlg : private FbDialog protected:
virtual void * Entry();
private:
- void LoadTypes(wxSQLite3Database &database);
+ void LoadTypes(FbSQLite3Database &database);
wxEvtHandler * m_frame;
};
-
+
class RefsThread: public FbThread {
public:
RefsThread(wxEvtHandler * frame)
@@ -96,15 +96,15 @@ class FbConfigDlg : private FbDialog protected:
virtual void * Entry();
private:
- void LoadTables(wxSQLite3Database &database);
+ void LoadTables(FbSQLite3Database &database);
wxEvtHandler * m_frame;
};
-
- class PanelTool: public wxPanel {
- public:
- PanelTool(wxWindow * parent);
- virtual void Save(wxSQLite3Database &database) = 0;
- protected:
+
+ class PanelTool: public wxPanel {
+ public:
+ PanelTool(wxWindow * parent);
+ virtual void Save(FbSQLite3Database &database) = 0;
+ protected:
wxToolBar m_toolbar;
FbTreeViewCtrl m_treeview;
void EnableTool(bool enable);
@@ -113,20 +113,20 @@ class FbConfigDlg : private FbDialog DECLARE_CLASS(PanelTool)
DECLARE_EVENT_TABLE()
};
-
- class PanelMain: public wxPanel {
- public: PanelMain(wxWindow *parent);
+
+ class PanelMain: public wxPanel {
+ public: PanelMain(wxWindow *parent);
};
- class PanelInet: public wxPanel {
- public: PanelInet(wxWindow *parent);
+ class PanelInet: public wxPanel {
+ public: PanelInet(wxWindow *parent);
};
- class PanelType: public PanelTool {
- public:
- PanelType(wxWindow *parent);
+ class PanelType: public PanelTool {
+ public:
+ PanelType(wxWindow *parent);
virtual ~PanelType();
- virtual void Save(wxSQLite3Database &database);
+ virtual void Save(FbSQLite3Database &database);
private:
TypeThread m_thread;
wxArrayString m_deleted;
@@ -138,11 +138,11 @@ class FbConfigDlg : private FbDialog DECLARE_EVENT_TABLE()
};
- class PanelRefs: public PanelTool {
- public:
- PanelRefs(wxWindow *parent, FbDatabase & database);
+ class PanelRefs: public PanelTool {
+ public:
+ PanelRefs(wxWindow *parent, FbDatabase & database);
virtual ~PanelRefs();
- virtual void Save(wxSQLite3Database &database);
+ virtual void Save(FbSQLite3Database &database);
private:
RefsThread m_thread;
FbDatabase & m_database;
@@ -159,7 +159,7 @@ class FbConfigDlg : private FbDialog class TypeData: public FbModelData
{
public:
- TypeData(wxSQLite3ResultSet &result);
+ TypeData(FbSQLite3ResultSet &result);
TypeData(const wxString &type, const wxString &command = wxEmptyString)
: m_type(type), m_command(command), m_modified(true) {}
public:
@@ -175,10 +175,10 @@ class FbConfigDlg : private FbDialog class RefsData: public FbModelData
{
public:
- RefsData(wxSQLite3ResultSet &result);
+ RefsData(FbSQLite3ResultSet &result);
RefsData(const wxArrayString & values);
int GetCode() const { return m_code; }
- int Assign(wxSQLite3Statement & stmt);
+ int Assign(FbSQLite3Statement & stmt);
bool IsModified() { return m_modified; }
public:
virtual void SetValue(FbModel & model, size_t col, const wxString &value);
@@ -191,7 +191,7 @@ class FbConfigDlg : private FbDialog };
private:
- void SaveTypes(wxSQLite3Database &database);
+ void SaveTypes(FbSQLite3Database &database);
void Assign(bool write);
private:
diff --git a/sources/MyRuLib/dialogs/FbDataOpenDlg.cpp b/sources/MyRuLib/dialogs/FbDataOpenDlg.cpp index 1fa6ca9e..eb3f6562 100644 --- a/sources/MyRuLib/dialogs/FbDataOpenDlg.cpp +++ b/sources/MyRuLib/dialogs/FbDataOpenDlg.cpp @@ -1,6 +1,6 @@ #include "FbDataOpenDlg.h"
#include <wx/artprov.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbDataPath.h"
#include "FbLogoBitmap.h"
#include "FbDatabase.h"
@@ -197,7 +197,7 @@ void FbDataOpenDlg::UpdateFolder() return;
}
- wxSQLite3Database database;
+ FbSQLite3Database database;
database.Open(filename.GetFullPath(), wxEmptyString, WXSQLITE_OPEN_READWRITE);
if (!database.IsOpen()) {
m_folder.Clear();
@@ -206,7 +206,7 @@ void FbDataOpenDlg::UpdateFolder() wxString text;
wxString sql = wxT("SELECT text FROM params WHERE id="); sql << DB_LIBRARY_DIR;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.NextRow()) text = result.GetString(0);
if (text.IsEmpty()) {
diff --git a/sources/MyRuLib/dialogs/FbDirImportDlg.cpp b/sources/MyRuLib/dialogs/FbDirImportDlg.cpp index 873b37fa..14138ab5 100644 --- a/sources/MyRuLib/dialogs/FbDirImportDlg.cpp +++ b/sources/MyRuLib/dialogs/FbDirImportDlg.cpp @@ -1,6 +1,6 @@ #include "FbDirImportDlg.h"
#include <wx/artprov.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbDataPath.h"
#include "FbLogoBitmap.h"
#include "FbDatabase.h"
diff --git a/sources/MyRuLib/dialogs/FbExportDlg.cpp b/sources/MyRuLib/dialogs/FbExportDlg.cpp index 39a83e14..add1b4f1 100644 --- a/sources/MyRuLib/dialogs/FbExportDlg.cpp +++ b/sources/MyRuLib/dialogs/FbExportDlg.cpp @@ -141,7 +141,7 @@ void FbExportDlg::LoadFormats() wxString sql = wxT("SELECT id, name FROM script ORDER BY id");
FbLocalDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while ( result.NextRow() ) {
int code = result.GetInt(0);
wxString name = _("filename"); name << wxT('.') << result.GetString(1);
diff --git a/sources/MyRuLib/dialogs/FbParamsDlg.cpp b/sources/MyRuLib/dialogs/FbParamsDlg.cpp index 79d4e9dc..c1d4c345 100644 --- a/sources/MyRuLib/dialogs/FbParamsDlg.cpp +++ b/sources/MyRuLib/dialogs/FbParamsDlg.cpp @@ -39,10 +39,10 @@ void * FbParamsDlg::LoadThread::Entry() return NULL;
}
-void FbParamsDlg::LoadThread::LoadTypes(wxSQLite3Database &database)
+void FbParamsDlg::LoadThread::LoadTypes(FbSQLite3Database &database)
{
wxString sql = GetCommandSQL(wxT("config"));
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.IsOk()) return;
FbListStore * model = new FbListStore;
while ( result.NextRow() ) {
@@ -54,10 +54,10 @@ void FbParamsDlg::LoadThread::LoadTypes(wxSQLite3Database &database) m_frame->AddPendingEvent(event);
}
-void FbParamsDlg::LoadThread::LoadScripts(wxSQLite3Database &database)
+void FbParamsDlg::LoadThread::LoadScripts(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT id, name, text FROM script ORDER BY id");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.IsOk()) return;
FbListStore * model = new FbListStore;
while ( result.NextRow() ) {
@@ -72,7 +72,7 @@ void FbParamsDlg::LoadThread::LoadScripts(wxSQLite3Database &database) IMPLEMENT_CLASS(FbParamsDlg::TypeData, FbModelData)
-FbParamsDlg::TypeData::TypeData(wxSQLite3ResultSet &result)
+FbParamsDlg::TypeData::TypeData(FbSQLite3ResultSet &result)
: m_type(result.GetString(0)), m_command(result.GetString(1)), m_modified(false)
{
}
@@ -93,7 +93,7 @@ wxString FbParamsDlg::TypeData::GetValue(FbModel & model, size_t col) const IMPLEMENT_CLASS(FbParamsDlg::ScriptData, FbModelData)
-FbParamsDlg::ScriptData::ScriptData(wxSQLite3ResultSet &result)
+FbParamsDlg::ScriptData::ScriptData(FbSQLite3ResultSet &result)
: m_code(result.GetInt(0)), m_name(result.GetString(1)), m_text(result.GetString(2)), m_modified(false)
{
}
@@ -1000,29 +1000,29 @@ void FbParamsDlg::SaveData() SaveTypes(database);
}
-void FbParamsDlg::DeleteTypes(wxSQLite3Database &database)
+void FbParamsDlg::DeleteTypes(FbSQLite3Database &database)
{
size_t count = m_del_type.Count();
for (size_t i = 0; i < count; i++) {
wxString sql = wxT("DELETE FROM types WHERE file_type=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_del_type[i]);
stmt.ExecuteUpdate();
}
}
-void FbParamsDlg::DeleteScripts(wxSQLite3Database &database)
+void FbParamsDlg::DeleteScripts(FbSQLite3Database &database)
{
size_t count = m_del_scr.Count();
for (size_t i = 0; i < count; i++) {
wxString sql = wxT("DELETE FROM script WHERE id=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, m_del_scr[i]);
stmt.ExecuteUpdate();
}
}
-void FbParamsDlg::SaveScripts(wxSQLite3Database &database)
+void FbParamsDlg::SaveScripts(FbSQLite3Database &database)
{
FbTreeViewCtrl * treeview = wxDynamicCast(FindWindow(ID_SCRIPT_LIST), FbTreeViewCtrl);
if (!treeview) return;
@@ -1037,7 +1037,7 @@ void FbParamsDlg::SaveScripts(wxSQLite3Database &database) FbModelItem item = model->GetData(i);
ScriptData * data = wxDynamicCast(&item, ScriptData);
if (data && data->IsModified()) {
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, data->GetCode());
stmt.Bind(2, data->GetValue(*model, 0));
stmt.Bind(3, data->GetValue(*model, 1));
@@ -1046,7 +1046,7 @@ void FbParamsDlg::SaveScripts(wxSQLite3Database &database) }
}
-void FbParamsDlg::SaveTypes(wxSQLite3Database &database)
+void FbParamsDlg::SaveTypes(FbSQLite3Database &database)
{
FbTreeViewCtrl * treeview = wxDynamicCast(FindWindow(ID_TYPE_LIST), FbTreeViewCtrl);
if (!treeview) return;
@@ -1061,7 +1061,7 @@ void FbParamsDlg::SaveTypes(wxSQLite3Database &database) FbModelItem item = model->GetData(i);
TypeData * data = wxDynamicCast(&item, TypeData);
if (data && data->IsModified()) {
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, data->GetValue(*model, 0));
stmt.Bind(2, data->GetValue(*model, 1));
stmt.ExecuteUpdate();
diff --git a/sources/MyRuLib/dialogs/FbParamsDlg.h b/sources/MyRuLib/dialogs/FbParamsDlg.h index 47d88da8..79e03040 100644 --- a/sources/MyRuLib/dialogs/FbParamsDlg.h +++ b/sources/MyRuLib/dialogs/FbParamsDlg.h @@ -6,7 +6,7 @@ #include <wx/fontpicker.h>
#include <wx/clrpicker.h>
#include <wx/treebase.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbWindow.h"
#include "controls/FbTreeModel.h"
@@ -81,8 +81,8 @@ class FbParamsDlg : private FbDialog protected:
virtual void * Entry();
private:
- void LoadTypes(wxSQLite3Database &database);
- void LoadScripts(wxSQLite3Database &database);
+ void LoadTypes(FbSQLite3Database &database);
+ void LoadScripts(FbSQLite3Database &database);
wxEvtHandler * m_frame;
};
class PanelFont: public wxPanel
@@ -120,7 +120,7 @@ class FbParamsDlg : private FbDialog class TypeData: public FbModelData
{
public:
- TypeData(wxSQLite3ResultSet &result);
+ TypeData(FbSQLite3ResultSet &result);
TypeData(const wxString &type, const wxString &command = wxEmptyString)
: m_type(type), m_command(command), m_modified(true) {}
public:
@@ -135,7 +135,7 @@ class FbParamsDlg : private FbDialog class ScriptData: public FbModelData
{
public:
- ScriptData(wxSQLite3ResultSet &result);
+ ScriptData(FbSQLite3ResultSet &result);
ScriptData(int code, const wxString &name, const wxString &text)
: m_code(code), m_name(name), m_text(text), m_modified(true) {}
public:
@@ -170,10 +170,10 @@ class FbParamsDlg : private FbDialog void SetColour( wxWindowID id, wxColour colour );
void SelectApplication();
void SaveData();
- void DeleteTypes(wxSQLite3Database &database);
- void DeleteScripts(wxSQLite3Database &database);
- void SaveTypes(wxSQLite3Database &database);
- void SaveScripts(wxSQLite3Database &database);
+ void DeleteTypes(FbSQLite3Database &database);
+ void DeleteScripts(FbSQLite3Database &database);
+ void SaveTypes(FbSQLite3Database &database);
+ void SaveScripts(FbSQLite3Database &database);
void SaveScripts();
void EnableTool(wxWindowID id, bool enable);
void FillFormats(FbTreeViewCtrl * treeview, FbModel * model);
diff --git a/sources/MyRuLib/dialogs/FbSequenDlg.cpp b/sources/MyRuLib/dialogs/FbSequenDlg.cpp index 3cec14b1..aa5ea867 100644 --- a/sources/MyRuLib/dialogs/FbSequenDlg.cpp +++ b/sources/MyRuLib/dialogs/FbSequenDlg.cpp @@ -60,7 +60,7 @@ int FbSequenDlg::Find() int FbSequenDlg::DoAppend()
{
wxString sql = wxT("INSERT INTO sequences(value, id) VALUES (?,?)");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
m_id = - m_database.NewId(DB_NEW_SEQUENCE);
stmt.Bind(1, GetValue());
stmt.Bind(2, m_id);
@@ -71,7 +71,7 @@ int FbSequenDlg::DoAppend() int FbSequenDlg::DoModify()
{
wxString sql = wxT("UPDATE sequences SET value=? WHERE id=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, GetValue());
stmt.Bind(2, m_id);
stmt.ExecuteUpdate();
@@ -82,23 +82,23 @@ int FbSequenDlg::DoModify() int FbSequenDlg::DoReplace()
{
- wxSQLite3Transaction trans(&m_database, WXSQLITE_TRANSACTION_DEFERRED);
+ FbSQLite3Transaction trans(&m_database, WXSQLITE_TRANSACTION_DEFERRED);
{
wxString sql = wxT("UPDATE bookseq SET id_seq=? WHERE id_seq=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_exists);
stmt.Bind(2, m_id);
stmt.ExecuteUpdate();
}
{
wxString sql = wxT("DELETE FROM sequences WHERE id=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_id);
stmt.ExecuteUpdate();
}
{
wxString sql = wxT("DELETE FROM fts_seqn WHERE docid=?");
- wxSQLite3Statement stmt = m_database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = m_database.PrepareStatement(sql);
stmt.Bind(1, m_id);
stmt.ExecuteUpdate();
}
diff --git a/sources/MyRuLib/dialogs/FbTitleDlg.cpp b/sources/MyRuLib/dialogs/FbTitleDlg.cpp index 97077b5f..283c894d 100644 --- a/sources/MyRuLib/dialogs/FbTitleDlg.cpp +++ b/sources/MyRuLib/dialogs/FbTitleDlg.cpp @@ -279,11 +279,11 @@ void FbTitleDlg::GenrPanel::Empty() // FbTitleDlg::AuthSizer
//-----------------------------------------------------------------------------
-FbTitleDlg::AuthSizer::AuthSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &ids)
+FbTitleDlg::AuthSizer::AuthSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &ids)
: wxBoxSizer(wxVERTICAL)
{
wxString sql = wxString::Format(wxT("SELECT id, full_name FROM authors WHERE id IN(SELECT DISTINCT id_author FROM books WHERE id IN(%s) AND id_author<>0) ORDER BY 2"), ids.c_str()) << fbCOLLATE_CYR;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.Eof()) {
Add( new AuthPanel(parent, this), 1, wxEXPAND, 5 );
} else {
@@ -317,10 +317,10 @@ void FbTitleDlg::AuthSizer::Get(wxArrayInt &code, wxString &text) // FbTitleDlg::SeqnSizer
//-----------------------------------------------------------------------------
-FbTitleDlg::SeqnSizer::SeqnSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &sql)
+FbTitleDlg::SeqnSizer::SeqnSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &sql)
: wxBoxSizer(wxVERTICAL)
{
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.Eof()) {
Add( new SeqnPanel(parent, this), 1, wxEXPAND, 5 );
} else {
@@ -335,12 +335,12 @@ FbTitleDlg::SeqnSizer::SeqnSizer(wxWindow* parent, wxSQLite3Database &database, // FbTitleDlg::GenrSizer
//-----------------------------------------------------------------------------
-FbTitleDlg::GenrSizer::GenrSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &sql)
+FbTitleDlg::GenrSizer::GenrSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &sql)
: wxBoxSizer(wxVERTICAL)
{
FbGenreFunction func_genre;
database.CreateFunction(wxT("GENRE"), 1, func_genre);
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.Eof()) {
Add( new GenrPanel(parent, this), 1, wxEXPAND, 5 );
} else {
@@ -453,10 +453,10 @@ wxString FbTitleDlg::TitlePanel::GetGenr() return text;
}
-void FbTitleDlg::TitlePanel::SaveGenr(int book, wxSQLite3Database &database)
+void FbTitleDlg::TitlePanel::SaveGenr(int book, FbSQLite3Database &database)
{
wxString sql = wxT("INSERT OR REPLACE INTO genres(id_book,id_genre) VALUES (?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
wxString text;
wxArrayString items;
@@ -481,10 +481,10 @@ void FbTitleDlg::TitlePanel::SaveGenr(int book, wxSQLite3Database &database) database.ExecuteUpdate(sql);
}
-void FbTitleDlg::TitlePanel::SaveSeqn(int book, wxSQLite3Database &database)
+void FbTitleDlg::TitlePanel::SaveSeqn(int book, FbSQLite3Database &database)
{
wxString sql = wxT("INSERT OR REPLACE INTO bookseq(id_book,id_seq,number) VALUES (?,?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
wxString text;
wxArrayInt items;
@@ -514,7 +514,7 @@ void FbTitleDlg::TitlePanel::SaveSeqn(int book, wxSQLite3Database &database) // FbTitleDlg::DscrPanel
//-----------------------------------------------------------------------------
-FbTitleDlg::DscrPanel::DscrPanel( wxWindow* parent, int book, wxSQLite3ResultSet &result )
+FbTitleDlg::DscrPanel::DscrPanel( wxWindow* parent, int book, FbSQLite3ResultSet &result )
: wxPanel( parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 )
{
wxBoxSizer * bSizerMain = new wxBoxSizer( wxVERTICAL );
@@ -538,8 +538,8 @@ void * FbTitleDlg::SearchThread::Entry() FbCommonDatabase database;
wxString sql = wxT("SELECT docid FROM %s WHERE %s MATCH ? ORDER BY content");
sql = wxString::Format(sql, m_table.c_str(), m_table.c_str());
- wxSQLite3Statement stmt = database.PrepareStatement(sql); stmt.Bind(1, text);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3Statement stmt = database.PrepareStatement(sql); stmt.Bind(1, text);
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
int code = 0;
wxArrayInt items;
@@ -557,7 +557,7 @@ void * FbTitleDlg::SearchThread::Entry() items.Clear();
stmt.Reset();
stmt.Bind(1, text);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
while (result.NextRow()) {
if (IsClosed()) return NULL;
items.Add(result.GetInt(0));
@@ -594,7 +594,7 @@ void FbTitleDlg::ArrangeControls(int height) // FbSingleTitleDlg::MainPanel
//-----------------------------------------------------------------------------
-FbSingleTitleDlg::MainPanel::MainPanel(wxWindow* parent, int book, wxSQLite3Database &database, wxSQLite3ResultSet &result)
+FbSingleTitleDlg::MainPanel::MainPanel(wxWindow* parent, int book, FbSQLite3Database &database, FbSQLite3ResultSet &result)
: TitlePanel( parent )
{
wxFlexGridSizer * fgSizerMain = new wxFlexGridSizer( 2 );
@@ -674,8 +674,8 @@ bool FbSingleTitleDlg::Execute(int book) {
FbCommonDatabase database;
wxString sql = fbT("SELECT * FROM books WHERE id=? LIMIT 1");
- wxSQLite3Statement stmt = database.PrepareStatement(sql); stmt.Bind(1, book);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3Statement stmt = database.PrepareStatement(sql); stmt.Bind(1, book);
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
if (!result.NextRow()) return false;
FbSingleTitleDlg dlg(book, database, result);
@@ -684,7 +684,7 @@ bool FbSingleTitleDlg::Execute(int book) return ok;
}
-FbSingleTitleDlg::FbSingleTitleDlg(int book, wxSQLite3Database &database, wxSQLite3ResultSet &result)
+FbSingleTitleDlg::FbSingleTitleDlg(int book, FbSQLite3Database &database, FbSQLite3ResultSet &result)
: FbTitleDlg(_("Properties"))
{
wxBoxSizer * sizer = new wxBoxSizer( wxVERTICAL );
@@ -720,7 +720,7 @@ FbSingleTitleDlg::FbSingleTitleDlg(int book, wxSQLite3Database &database, wxSQLi }
}
-void FbSingleTitleDlg::Save(int book, wxSQLite3Database &database, wxSQLite3ResultSet &result)
+void FbSingleTitleDlg::Save(int book, FbSQLite3Database &database, FbSQLite3ResultSet &result)
{
BookData data;
wxArrayInt ids; wxString authors;
@@ -735,7 +735,7 @@ void FbSingleTitleDlg::Save(int book, wxSQLite3Database &database, wxSQLite3Resu FbAutoCommit commit(database);
wxString sql = wxT("INSERT OR REPLACE INTO books(id,id_author,title,genres,id_archive,file_name,file_path,file_size,file_type,lang,description,created,md5sum) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
size_t count = ids.Count();
for (size_t i = 0; i < count; i++) {
@@ -758,7 +758,7 @@ void FbSingleTitleDlg::Save(int book, wxSQLite3Database &database, wxSQLite3Resu {
wxString sql = wxT("INSERT OR REPLACE INTO fts_book(content,docid) VALUES(LOW(?),?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, data.title);
stmt.Bind(2, book);
stmt.ExecuteUpdate();
@@ -781,7 +781,7 @@ void FbSingleTitleDlg::Save(int book, wxSQLite3Database &database, wxSQLite3Resu // FbGroupTitleDlg::MainPanel
//-----------------------------------------------------------------------------
-FbGroupTitleDlg::MainPanel::MainPanel(wxWindow* parent, const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database)
+FbGroupTitleDlg::MainPanel::MainPanel(wxWindow* parent, const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database)
: TitlePanel( parent )
{
wxFlexGridSizer * fgSizerMain = new wxFlexGridSizer( 2 );
@@ -869,7 +869,7 @@ wxString FbGroupTitleDlg::GetCodes(const wxArrayInt &items) return result;
}
-FbGroupTitleDlg::FbGroupTitleDlg(const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database)
+FbGroupTitleDlg::FbGroupTitleDlg(const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database)
: FbTitleDlg(_("Group processing"))
{
wxBoxSizer * sizer = new wxBoxSizer( wxVERTICAL );
@@ -896,6 +896,6 @@ FbGroupTitleDlg::FbGroupTitleDlg(const wxArrayInt &items, const wxString &codes, m_title->Layout();
}
-void FbGroupTitleDlg::Save(const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database)
+void FbGroupTitleDlg::Save(const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database)
{
}
diff --git a/sources/MyRuLib/dialogs/FbTitleDlg.h b/sources/MyRuLib/dialogs/FbTitleDlg.h index 2cebc162..8e368b3f 100644 --- a/sources/MyRuLib/dialogs/FbTitleDlg.h +++ b/sources/MyRuLib/dialogs/FbTitleDlg.h @@ -5,7 +5,7 @@ #include <wx/combo.h>
#include <wx/checkbox.h>
#include <wx/datectrl.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbConst.h"
#include "FbBookEvent.h"
#include "FbThread.h"
@@ -34,20 +34,20 @@ class FbTitleDlg : public FbDialog class AuthSizer : public wxBoxSizer
{
public:
- AuthSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &ids);
+ AuthSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &ids);
void Get(wxArrayInt &list, wxString &text);
};
class SeqnSizer : public wxBoxSizer
{
public:
- SeqnSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &sql);
+ SeqnSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &sql);
};
class GenrSizer : public wxBoxSizer
{
public:
- GenrSizer(wxWindow* parent, wxSQLite3Database &database, const wxString &sql);
+ GenrSizer(wxWindow* parent, FbSQLite3Database &database, const wxString &sql);
};
class TitlePanel: public wxScrolledWindow
@@ -55,8 +55,8 @@ class FbTitleDlg : public FbDialog public:
TitlePanel( wxWindow* parent);
void GetAuths(wxArrayInt &list, wxString &text);
- void SaveSeqn(int book, wxSQLite3Database &database);
- void SaveGenr(int book, wxSQLite3Database &database);
+ void SaveSeqn(int book, FbSQLite3Database &database);
+ void SaveGenr(int book, FbSQLite3Database &database);
void GetData(BookData & data);
wxString GetGenr();
protected:
@@ -78,7 +78,7 @@ class FbTitleDlg : public FbDialog class DscrPanel: public wxPanel
{
public:
- DscrPanel( wxWindow* parent, int book, wxSQLite3ResultSet &result );
+ DscrPanel( wxWindow* parent, int book, FbSQLite3ResultSet &result );
wxString GetValue() { return m_text.GetValue(); }
private:
wxTextCtrl m_text;
@@ -188,15 +188,15 @@ private: class MainPanel: public TitlePanel
{
public:
- MainPanel(wxWindow* parent, int book, wxSQLite3Database &database, wxSQLite3ResultSet &result);
+ MainPanel(wxWindow* parent, int book, FbSQLite3Database &database, FbSQLite3ResultSet &result);
};
public:
static bool Execute(int book);
- FbSingleTitleDlg(int book, wxSQLite3Database &database, wxSQLite3ResultSet &result);
+ FbSingleTitleDlg(int book, FbSQLite3Database &database, FbSQLite3ResultSet &result);
private:
- void Save(int book, wxSQLite3Database &database, wxSQLite3ResultSet &result);
+ void Save(int book, FbSQLite3Database &database, FbSQLite3ResultSet &result);
private:
wxNotebook * m_notebook;
@@ -210,7 +210,7 @@ protected: class MainPanel: public TitlePanel
{
public:
- MainPanel(wxWindow* parent, const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database);
+ MainPanel(wxWindow* parent, const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database);
private:
wxCheckBox * cb_auth;
wxCheckBox * cb_seqn;
@@ -219,8 +219,8 @@ protected: public:
static bool Execute(const wxArrayInt &items);
- FbGroupTitleDlg(const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database);
- void Save(const wxArrayInt &items, const wxString &codes, wxSQLite3Database &database);
+ FbGroupTitleDlg(const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database);
+ void Save(const wxArrayInt &items, const wxString &codes, FbSQLite3Database &database);
private:
static wxString GetCodes(const wxArrayInt &items);
diff --git a/sources/MyRuLib/frames/FbFrameClss.cpp b/sources/MyRuLib/frames/FbFrameClss.cpp index e0341af5..85502787 100644 --- a/sources/MyRuLib/frames/FbFrameClss.cpp +++ b/sources/MyRuLib/frames/FbFrameClss.cpp @@ -24,11 +24,11 @@ FbFrameClss * FbFrameClss::Create(wxAuiNotebook * parent, int code, bool select) FbCommonDatabase database;
if (!database.TableExists(wxT("tables"))) return NULL;
wxString sql = wxT("SELECT * FROM tables WHERE id="); sql << code;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
return result.NextRow() ? new FbFrameClss(parent, result, select) : NULL;
}
-FbFrameClss::FbFrameClss(wxAuiNotebook * parent, wxSQLite3ResultSet & result, bool select)
+FbFrameClss::FbFrameClss(wxAuiNotebook * parent, FbSQLite3ResultSet & result, bool select)
: FbFrameBase(parent, ID_FRAME_CLSS, result.GetString(wxT("title")), select)
, m_code(result.GetInt(wxT("id")))
{
@@ -44,7 +44,7 @@ FbFrameClss::FbFrameClss(wxAuiNotebook * parent, wxSQLite3ResultSet & result, bo CreateModel(result);
}
-void FbFrameClss::CreateModel(wxSQLite3ResultSet & result)
+void FbFrameClss::CreateModel(FbSQLite3ResultSet & result)
{
FbTreeModel * model = new FbClssTreeModel(result);
FbParentData * root = new FbClssModelData(*model, result.GetString(wxT("title")));
diff --git a/sources/MyRuLib/frames/FbFrameClss.h b/sources/MyRuLib/frames/FbFrameClss.h index 732966f8..c7a6fb62 100644 --- a/sources/MyRuLib/frames/FbFrameClss.h +++ b/sources/MyRuLib/frames/FbFrameClss.h @@ -13,21 +13,21 @@ class FbFrameClss : public FbFrameBase {
public:
static FbFrameClss * Create(wxAuiNotebook * parent, int code, bool select = false);
- FbFrameClss(wxAuiNotebook * parent, wxSQLite3ResultSet & result, bool select = false);
+ FbFrameClss(wxAuiNotebook * parent, FbSQLite3ResultSet & result, bool select = false);
int GetCode() const { return m_code; } ;
protected:
- class MasterMenu: public wxMenu {
+ class MasterMenu: public wxMenu {
public: MasterMenu(const wxString & code);
};
void CreateColumns();
private:
- void CreateModel(wxSQLite3ResultSet & result);
+ void CreateModel(FbSQLite3ResultSet & result);
void ReplaceData(int old_id, int new_id, wxTreeItemId selected, const wxString &newname);
void ShowContextMenu(const wxPoint& pos, wxTreeItemId item);
void SelectFirstAuthor(const int book = 0);
void AppendAttay(FbTreeModel &model, const wxArrayInt &items);
private:
- const int m_code;
+ const int m_code;
wxSplitterWindow * m_BooksSplitter;
private:
void OnContextMenu(wxTreeEvent& event);
diff --git a/sources/MyRuLib/frames/FbFrameFind.h b/sources/MyRuLib/frames/FbFrameFind.h index f986d2fc..08060a47 100644 --- a/sources/MyRuLib/frames/FbFrameFind.h +++ b/sources/MyRuLib/frames/FbFrameFind.h @@ -11,7 +11,7 @@ class FbFrameFind : public FbFrameBase virtual void CreateColumns() {}
private:
void CreateBookInfo();
- void FillBooks(wxSQLite3ResultSet & result, const wxString &caption);
+ void FillBooks(FbSQLite3ResultSet & result, const wxString &caption);
private:
FbMasterInfo m_info;
wxString m_title;
diff --git a/sources/MyRuLib/frames/FbFrameFldr.cpp b/sources/MyRuLib/frames/FbFrameFldr.cpp index ef66a7d3..eb2e381e 100644 --- a/sources/MyRuLib/frames/FbFrameFldr.cpp +++ b/sources/MyRuLib/frames/FbFrameFldr.cpp @@ -68,7 +68,7 @@ void FbFrameFldr::FillFolders(const int current) wxString sql = wxT("SELECT id, value FROM folders ORDER BY value");
FbLocalDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
int code = result.GetInt(0);
wxString name = result.GetString(1);
@@ -124,7 +124,7 @@ void FbFrameFldr::OnFolderAppend(wxCommandEvent & event) FbLocalDatabase database;
id = database.NewId(FB_NEW_FOLDER);
wxString sql = wxT("INSERT INTO folders(value,id) VALUES(?,?)");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, name);
stmt.Bind(2, id);
bool ok = stmt.ExecuteUpdate();
@@ -152,7 +152,7 @@ void FbFrameFldr::OnFolderModify(wxCommandEvent & event) FbLocalDatabase database;
wxString sql = wxT("UPDATE folders SET value=? WHERE id=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, name);
stmt.Bind(2, data->GetCode());
bool ok = stmt.ExecuteUpdate();
@@ -179,7 +179,7 @@ void FbFrameFldr::OnFolderDelete(wxCommandEvent & event) FbLocalDatabase database;
wxString sql = wxT("DELETE FROM folders WHERE id=?");
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, data->GetCode());
bool ok = stmt.ExecuteUpdate();
diff --git a/sources/MyRuLib/frames/FbFrameGenr.h b/sources/MyRuLib/frames/FbFrameGenr.h index eee05c98..98df48fa 100644 --- a/sources/MyRuLib/frames/FbFrameGenr.h +++ b/sources/MyRuLib/frames/FbFrameGenr.h @@ -8,7 +8,7 @@ #include <wx/textctrl.h>
#include <wx/sizer.h>
#include <wx/splitter.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "FbFrameBase.h"
#include "FbBookEvent.h"
#include "FbSmartPtr.h"
diff --git a/sources/MyRuLib/frames/FbFrameHtml.cpp b/sources/MyRuLib/frames/FbFrameHtml.cpp index e07d65cd..ec228ad8 100644 --- a/sources/MyRuLib/frames/FbFrameHtml.cpp +++ b/sources/MyRuLib/frames/FbFrameHtml.cpp @@ -154,7 +154,7 @@ void FbFrameHtml::DoSubmit() FbLocalDatabase database;
int key = database.NewId(FB_NEW_COMMENT);
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, key);
stmt.Bind(2, m_md5sum);
stmt.Bind(3, wxDateTime::Now().FormatISODate() + wxT(" ") + wxDateTime::Now().FormatISOTime());
@@ -200,7 +200,7 @@ void FbFrameHtml::DoModify() wxString sql = wxT("UPDATE comments SET posted=?, caption=?, comment=? WHERE id=?");
FbLocalDatabase database;
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.Bind(1, wxDateTime::Now().FormatISODate() + wxT(" ") + wxDateTime::Now().FormatISOTime());
stmt.Bind(2, caption);
stmt.Bind(3, comment);
@@ -234,7 +234,7 @@ void FbFrameHtml::ModifyLink(const wxString &key) {
FbLocalDatabase database;
wxString sql = wxT("SELECT id, caption, comment FROM comments WHERE id=") + key;
- wxSQLite3ResultSet res = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet res = database.ExecuteQuery(sql);
if (res.NextRow()) {
m_key = res.GetString(0);
m_Caption.SetValue( res.GetString(1) );
diff --git a/sources/MyRuLib/frames/FbFrameInfo.cpp b/sources/MyRuLib/frames/FbFrameInfo.cpp index 7dab6602..49c427ec 100644 --- a/sources/MyRuLib/frames/FbFrameInfo.cpp +++ b/sources/MyRuLib/frames/FbFrameInfo.cpp @@ -98,7 +98,7 @@ void FbFrameInfoThread::WriteCount() {
wxString sql = (wxT("SELECT COUNT(id), MIN(created), MAX(created), SUM(file_size)/1024/1024 FROM (SELECT DISTINCT id, created, file_size FROM books WHERE deleted IS NULL) AS books"));
- wxSQLite3ResultSet result = m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = m_database.ExecuteQuery(sql);
if (result.NextRow()) {
min = GetDate(result.GetInt(1));
max = GetDate(result.GetInt(2));
@@ -111,7 +111,7 @@ void FbFrameInfoThread::WriteCount() {
wxString sql = (wxT("SELECT COUNT(id) FROM authors WHERE id<>0"));
- wxSQLite3ResultSet result = m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = m_database.ExecuteQuery(sql);
if (result.NextRow()) {
wxString count = F(result.GetInt64(0));
m_html << CreateRow(_("Authors count:"), count);
@@ -153,7 +153,7 @@ void FbFrameInfoThread::WriteTypes() FROM (SELECT DISTINCT id, file_type, file_size FROM books WHERE deleted IS NULL) AS books \
GROUP BY file_type ORDER BY id DESC \
"));
- wxSQLite3ResultSet result = m_database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = m_database.ExecuteQuery(sql);
while (result.NextRow()) {
const wxString cell = wxT("<TD align=right bgcolor=%s>%s</TD>");
m_html += wxT("<TR>");
diff --git a/sources/MyRuLib/models/FbAuthList.cpp b/sources/MyRuLib/models/FbAuthList.cpp index 777b0aae..ce3cc43b 100644 --- a/sources/MyRuLib/models/FbAuthList.cpp +++ b/sources/MyRuLib/models/FbAuthList.cpp @@ -34,19 +34,19 @@ void * FbAuthListThread::Entry() return NULL;
}
-void FbAuthListThread::DoLetter(wxSQLite3Database &database)
+void FbAuthListThread::DoLetter(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT id, full_name FROM authors");
sql << GetJoin();
if (m_info.m_letter) sql << wxT("WHERE letter=?");
sql << GetOrder();
- wxSQLite3Statement stmt = database.PrepareStatement(sql);
+ FbSQLite3Statement stmt = database.PrepareStatement(sql);
if (m_info.m_letter) stmt.Bind(1, (wxString)m_info.m_letter);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
MakeModel(result);
}
-void FbAuthListThread::DoString(wxSQLite3Database &database)
+void FbAuthListThread::DoString(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT id, full_name FROM authors");
sql << GetJoin();
@@ -54,11 +54,11 @@ void FbAuthListThread::DoString(wxSQLite3Database &database) sql << GetOrder();
FbSearchFunction search(m_info.m_string);
database.CreateFunction(wxT("SEARCH"), 1, search);
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
MakeModel(result);
}
-void FbAuthListThread::DoFullText(wxSQLite3Database &database)
+void FbAuthListThread::DoFullText(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT docid, full_name FROM fts_auth INNER JOIN authors ON id=docid");
sql << GetJoin();
@@ -66,11 +66,11 @@ void FbAuthListThread::DoFullText(wxSQLite3Database &database) sql << GetOrder();
FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.FTS(1, m_info.m_string);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
MakeModel(result);
}
-void FbAuthListThread::MakeModel(wxSQLite3ResultSet &result)
+void FbAuthListThread::MakeModel(FbSQLite3ResultSet &result)
{
if (!result.IsOk()) return;
wxWindowID id = ID_MODEL_CREATE;
@@ -204,7 +204,7 @@ int FbAuthListModel::GetCount(int code) }
void FbAuthListModel::SetCounter(const wxString & filename)
-{
- if (!filename.IsEmpty()) m_database.Open(filename);
- m_counter.clear();
+{
+ if (!filename.IsEmpty()) m_database.Open(filename);
+ m_counter.clear();
}
diff --git a/sources/MyRuLib/models/FbAuthList.h b/sources/MyRuLib/models/FbAuthList.h index 655eef9a..da8ce573 100644 --- a/sources/MyRuLib/models/FbAuthList.h +++ b/sources/MyRuLib/models/FbAuthList.h @@ -33,14 +33,14 @@ class FbAuthListThread : public FbFrameThread : FbFrameThread(frame, filename), m_info(info), m_order(order) {}
protected:
virtual void * Entry();
- void MakeModel(wxSQLite3ResultSet &result);
+ void MakeModel(FbSQLite3ResultSet &result);
private:
wxString GetJoin();
wxString GetOrder();
- void DoAuthor(wxSQLite3Database &database);
- void DoLetter(wxSQLite3Database &database);
- void DoString(wxSQLite3Database &database);
- void DoFullText(wxSQLite3Database &database);
+ void DoAuthor(FbSQLite3Database &database);
+ void DoLetter(FbSQLite3Database &database);
+ void DoString(FbSQLite3Database &database);
+ void DoFullText(FbSQLite3Database &database);
FbAuthListInfo m_info;
const int m_order;
};
@@ -82,7 +82,7 @@ class FbAuthListModel: public FbListModel private:
wxArrayInt m_items;
FbIntegerHash m_counter;
- wxSQLite3Database m_database;
+ FbSQLite3Database m_database;
DECLARE_CLASS(FbAuthListModel);
};
diff --git a/sources/MyRuLib/models/FbClssTree.cpp b/sources/MyRuLib/models/FbClssTree.cpp index 31f14c40..0ea5bd4b 100644 --- a/sources/MyRuLib/models/FbClssTree.cpp +++ b/sources/MyRuLib/models/FbClssTree.cpp @@ -7,7 +7,7 @@ IMPLEMENT_CLASS(FbClssTreeModel, FbTreeModel)
-FbClssTreeModel::FbClssTreeModel(wxSQLite3ResultSet & result)
+FbClssTreeModel::FbClssTreeModel(FbSQLite3ResultSet & result)
{
{
const wxString file = result.GetString(wxT("dir_file"));
@@ -45,17 +45,17 @@ FbClssModelData::FbClssModelData(FbModel & model, const wxString & name) , m_code(wxT("0"))
, m_name(name)
, m_children(false)
- , m_expanded(false)
+ , m_expanded(false)
, m_count(0)
{
}
-FbClssModelData::FbClssModelData(FbModel & model, FbParentData * parent, wxSQLite3ResultSet & result)
+FbClssModelData::FbClssModelData(FbModel & model, FbParentData * parent, FbSQLite3ResultSet & result)
: FbParentData(model, parent)
, m_code(result.GetString(0))
, m_name(result.GetString(1))
, m_children(result.GetInt(2))
- , m_expanded(false)
+ , m_expanded(false)
, m_count(0)
{
}
@@ -69,10 +69,10 @@ wxString FbClssModelData::GetValue(FbModel & model, size_t col) const }
}
-bool FbClssModelData::Expand(FbModel & model, bool expand)
+bool FbClssModelData::Expand(FbModel & model, bool expand)
{
if (m_expanded == expand) return false;
-
+
m_expanded = expand;
if (!expand) {
@@ -84,9 +84,9 @@ bool FbClssModelData::Expand(FbModel & model, bool expand) if (!tree) return false;
FbCommonDatabase database;
- wxSQLite3Statement stmt = database.PrepareStatement(tree->GetItemSQL());
+ FbSQLite3Statement stmt = database.PrepareStatement(tree->GetItemSQL());
stmt.Bind(1, m_code);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
while (result.NextRow()) {
new FbClssModelData(model, this, result);
}
diff --git a/sources/MyRuLib/models/FbClssTree.h b/sources/MyRuLib/models/FbClssTree.h index 813b88a3..51861188 100644 --- a/sources/MyRuLib/models/FbClssTree.h +++ b/sources/MyRuLib/models/FbClssTree.h @@ -7,7 +7,7 @@ class FbClssTreeModel: public FbTreeModel
{
public:
- FbClssTreeModel(wxSQLite3ResultSet & result);
+ FbClssTreeModel(FbSQLite3ResultSet & result);
wxString GetItemSQL() const { return m_ItemSQL; }
wxString GetBookSQL() const { return m_BookSQL; }
private:
@@ -21,13 +21,13 @@ class FbClssModelData: public FbParentData {
public:
FbClssModelData(FbModel & model, const wxString & name = wxEmptyString);
- FbClssModelData(FbModel & model, FbParentData * parent, wxSQLite3ResultSet & result);
+ FbClssModelData(FbModel & model, FbParentData * parent, FbSQLite3ResultSet & result);
void SetCount(int count) { m_count = count; }
const wxString & GetCode() const { return m_code; }
public:
virtual wxString GetValue(FbModel & model, size_t col) const;
virtual bool IsExpanded(FbModel & model) const { return m_expanded; }
- virtual bool HasChildren(FbModel & model) const { return m_children || Count(model); }
+ virtual bool HasChildren(FbModel & model) const { return m_children || Count(model); }
virtual bool HiddenRoot() const { return false; }
virtual bool IsBold(FbModel & model) const { return false; }
virtual bool Expand(FbModel & model, bool expand);
diff --git a/sources/MyRuLib/models/FbDateTree.cpp b/sources/MyRuLib/models/FbDateTree.cpp index c9248891..e6c1dc79 100644 --- a/sources/MyRuLib/models/FbDateTree.cpp +++ b/sources/MyRuLib/models/FbDateTree.cpp @@ -13,13 +13,13 @@ void * FbDateTreeThread::Entry() {
FbFrameDatabase database(this, m_counter);
wxString sql = wxT("SELECT DISTINCT created FROM books ORDER BY 1 DESC");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (result.IsOk()) MakeModel(result);
CreateCounter(database, m_sql);
return NULL;
}
-void FbDateTreeThread::MakeModel(wxSQLite3ResultSet &result)
+void FbDateTreeThread::MakeModel(FbSQLite3ResultSet &result)
{
bool ok = true;
diff --git a/sources/MyRuLib/models/FbDateTree.h b/sources/MyRuLib/models/FbDateTree.h index 903d4150..f70a0eee 100644 --- a/sources/MyRuLib/models/FbDateTree.h +++ b/sources/MyRuLib/models/FbDateTree.h @@ -1,7 +1,7 @@ #ifndef __FBDATETREE_H__
#define __FBDATETREE_H__
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
#include "controls/FbTreeModel.h"
#include "FbDatabase.h"
#include "FbCollection.h"
@@ -14,7 +14,7 @@ class FbDateTreeThread : public FbFrameThread : FbFrameThread(frame, counter) {}
protected:
virtual void * Entry();
- void MakeModel(wxSQLite3ResultSet &result);
+ void MakeModel(FbSQLite3ResultSet &result);
};
class FbDateYearData: public FbParentData
@@ -63,7 +63,7 @@ class FbDateTreeModel: public FbTreeModel int GetCount(int code);
private:
FbIntegerHash m_counter;
- wxSQLite3Database m_database;
+ FbSQLite3Database m_database;
DECLARE_CLASS(FbDateTreeModel);
};
diff --git a/sources/MyRuLib/models/FbExportTree.cpp b/sources/MyRuLib/models/FbExportTree.cpp index 6467c58f..2baf4391 100644 --- a/sources/MyRuLib/models/FbExportTree.cpp +++ b/sources/MyRuLib/models/FbExportTree.cpp @@ -234,7 +234,7 @@ wxString FbExportTreeContext::Normalize(const wxString &filename, bool translit) return newname;
}
-wxString FbExportTreeContext::Get(wxSQLite3ResultSet &result, const wxString &field)
+wxString FbExportTreeContext::Get(FbSQLite3ResultSet &result, const wxString &field)
{
wxString res;
wxString value = result.GetString(field);
@@ -252,7 +252,7 @@ wxString FbExportTreeContext::Get(wxSQLite3ResultSet &result, const wxString &fi return res;
}
-wxFileName FbExportTreeContext::GetFilename(wxSQLite3ResultSet &result)
+wxFileName FbExportTreeContext::GetFilename(FbSQLite3ResultSet &result)
{
wxString res;
bool skip = false;
@@ -385,7 +385,7 @@ void FbExportTreeModel::Create() FbSortedArrayInt items(FbArrayEvent::CompareInt);
FbCommonDatabase database;
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
while (result.NextRow()) {
int book = result.GetInt(0);
int size = result.GetInt(1);
diff --git a/sources/MyRuLib/models/FbExportTree.h b/sources/MyRuLib/models/FbExportTree.h index ad544e4f..9c40725d 100644 --- a/sources/MyRuLib/models/FbExportTree.h +++ b/sources/MyRuLib/models/FbExportTree.h @@ -3,7 +3,7 @@ #include "controls/FbTreeModel.h"
#include <wx/filename.h>
-#include <wx/wxsqlite3.h>
+#include "wx/FbSQLite3.h"
class FbConvertArray;
@@ -47,9 +47,9 @@ class FbExportTreeContext {
public:
FbExportTreeContext(FbExportTreeModel * model);
- wxFileName GetFilename(wxSQLite3ResultSet &result);
+ wxFileName GetFilename(FbSQLite3ResultSet &result);
private:
- wxString Get(wxSQLite3ResultSet &result, const wxString &field);
+ wxString Get(FbSQLite3ResultSet &result, const wxString &field);
wxString Normalize(const wxString &filename, bool translit = false);
private:
bool m_translit_folder;
diff --git a/sources/MyRuLib/models/FbFilterTree.cpp b/sources/MyRuLib/models/FbFilterTree.cpp index 0034b12e..de930412 100644 --- a/sources/MyRuLib/models/FbFilterTree.cpp +++ b/sources/MyRuLib/models/FbFilterTree.cpp @@ -122,7 +122,7 @@ void * FbFilterTreeThread::Entry() FbCommonDatabase database;
database.JoinThread(this);
wxString sql = wxT("SELECT DISTINCT file_type, lang FROM books");
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
if (!result.IsOk()) return NULL;
while (result.NextRow()) {
Add(types, result.GetString(0));
diff --git a/sources/MyRuLib/models/FbGenrTree.cpp b/sources/MyRuLib/models/FbGenrTree.cpp index 011b6b62..7ba25c67 100644 --- a/sources/MyRuLib/models/FbGenrTree.cpp +++ b/sources/MyRuLib/models/FbGenrTree.cpp @@ -40,7 +40,7 @@ bool FbGenrChildData::operator==(const FbMasterInfo & info) const IMPLEMENT_CLASS(FbGenrListData, FbModelData)
-FbGenrListData::FbGenrListData(wxSQLite3ResultSet &result)
+FbGenrListData::FbGenrListData(FbSQLite3ResultSet &result)
: m_code(result.GetString(0)), m_count(result.GetInt(1))
{
}
@@ -54,7 +54,7 @@ void * FbGenrListThread::Entry() FbCommonDatabase database;
database.JoinThread(this);
- wxSQLite3ResultSet result = database.ExecuteQuery(m_sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(m_sql);
if (!result.IsOk()) return NULL;
if (IsClosed()) return NULL;
diff --git a/sources/MyRuLib/models/FbGenrTree.h b/sources/MyRuLib/models/FbGenrTree.h index 64c37120..28e8da58 100644 --- a/sources/MyRuLib/models/FbGenrTree.h +++ b/sources/MyRuLib/models/FbGenrTree.h @@ -4,12 +4,12 @@ #include "controls/FbTreeModel.h"
#include "FbFrameThread.h"
-class wxSQLite3ResultSet;
+class FbSQLite3ResultSet;
class FbGenrListData: public FbModelData
{
public:
- FbGenrListData(wxSQLite3ResultSet & result);
+ FbGenrListData(FbSQLite3ResultSet & result);
private:
wxString m_code;
int m_count;
@@ -62,7 +62,7 @@ class FbGenrListThread: public FbFrameThread : FbFrameThread(frame, wxEmptyString) {}
protected:
virtual void * Entry();
- virtual void MakeModel(wxSQLite3ResultSet &result) {}
+ virtual void MakeModel(FbSQLite3ResultSet &result) {}
};
#endif // __FBGENRTREE_H__
diff --git a/sources/MyRuLib/models/FbSeqnList.cpp b/sources/MyRuLib/models/FbSeqnList.cpp index eefe14c8..b5e06b38 100644 --- a/sources/MyRuLib/models/FbSeqnList.cpp +++ b/sources/MyRuLib/models/FbSeqnList.cpp @@ -8,7 +8,7 @@ // FbSeqnListThread
//-----------------------------------------------------------------------------
-bool FbSeqnListThread::IsFullText(wxSQLite3Database &database) const
+bool FbSeqnListThread::IsFullText(FbSQLite3Database &database) const
{
return FbSearchFunction::IsFullText(m_string) && database.TableExists(wxT("fts_seqn"));
}
@@ -37,7 +37,7 @@ void * FbSeqnListThread::Entry() return NULL;
}
-void FbSeqnListThread::DoString(wxSQLite3Database &database)
+void FbSeqnListThread::DoString(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT id, value FROM sequences");
sql << GetJoin();
@@ -45,11 +45,11 @@ void FbSeqnListThread::DoString(wxSQLite3Database &database) sql << GetOrder();
FbSearchFunction search(m_string);
if (!m_string.IsEmpty()) database.CreateFunction(wxT("SEARCH"), 1, search);
- wxSQLite3ResultSet result = database.ExecuteQuery(sql);
+ FbSQLite3ResultSet result = database.ExecuteQuery(sql);
MakeModel(result);
}
-void FbSeqnListThread::DoFullText(wxSQLite3Database &database)
+void FbSeqnListThread::DoFullText(FbSQLite3Database &database)
{
wxString sql = wxT("SELECT docid, value FROM fts_seqn INNER JOIN sequences ON id=docid");
sql << GetJoin();
@@ -57,11 +57,11 @@ void FbSeqnListThread::DoFullText(wxSQLite3Database &database) sql << GetOrder();
FbSQLite3Statement stmt = database.PrepareStatement(sql);
stmt.FTS(1, m_string);
- wxSQLite3ResultSet result = stmt.ExecuteQuery();
+ FbSQLite3ResultSet result = stmt.ExecuteQuery();
MakeModel(result);
}
-void FbSeqnListThread::MakeModel(wxSQLite3ResultSet &result)
+void FbSeqnListThread::MakeModel(FbSQLite3ResultSet &result)
{
if (!result.IsOk()) return;
wxWindowID id = ID_MODEL_CREATE;
diff --git a/sources/MyRuLib/models/FbSeqnList.h b/sources/MyRuLib/models/FbSeqnList.h index 43477ebf..2c447116 100644 --- a/sources/MyRuLib/models/FbSeqnList.h +++ b/sources/MyRuLib/models/FbSeqnList.h @@ -12,13 +12,13 @@ class FbSeqnListThread: public FbFrameThread : FbFrameThread(frame, filename), m_string(string), m_order(order) {}
protected:
virtual void * Entry();
- void MakeModel(wxSQLite3ResultSet &result);
+ void MakeModel(FbSQLite3ResultSet &result);
private:
wxString GetJoin();
wxString GetOrder();
- void DoString(wxSQLite3Database &database);
- void DoFullText(wxSQLite3Database &database);
- bool IsFullText(wxSQLite3Database &database) const;
+ void DoString(FbSQLite3Database &database);
+ void DoFullText(FbSQLite3Database &database);
+ bool IsFullText(FbSQLite3Database &database) const;
private:
wxString m_string;
const int m_order;
@@ -61,7 +61,7 @@ class FbSeqnListModel: public FbListModel private:
wxArrayInt m_items;
FbIntegerHash m_counter;
- wxSQLite3Database m_database;
+ FbSQLite3Database m_database;
DECLARE_CLASS(FbSeqnListModel);
};
diff --git a/sources/MyRuLib/wx/FbSQLite3.h b/sources/MyRuLib/wx/FbSQLite3.h new file mode 100644 index 00000000..9bce8ed9 --- /dev/null +++ b/sources/MyRuLib/wx/FbSQLite3.h @@ -0,0 +1,313 @@ +#ifndef __FBSQLITE3_H__
+#define __FBSQLITE3_H__
+
+#include <wx/wxsqlite3.h>
+#include <wx/log.h>
+
+#define FBSQLITE3_BEGIN \
+ try {
+
+#define FBSQLITE3_END(result) \
+ } catch (wxSQLite3Exception e) { \
+ if (e.GetErrorCode() != 9) wxLogError(e.GetMessage()); \
+ return result; \
+ }
+
+class FbSQLite3ResultSet: private wxSQLite3ResultSet
+{
+public:
+ FbSQLite3ResultSet()
+ : wxSQLite3ResultSet() {}
+
+ FbSQLite3ResultSet(const wxSQLite3ResultSet& resultSet)
+ : wxSQLite3ResultSet(resultSet) {}
+
+ FbSQLite3ResultSet& operator=(const wxSQLite3ResultSet& resultSet) {
+ wxSQLite3ResultSet::operator=(resultSet);
+ return *this;
+ }
+
+ FbSQLite3ResultSet& operator=(const FbSQLite3ResultSet& resultSet) {
+ wxSQLite3ResultSet::operator=(resultSet);
+ return *this;
+ }
+
+ bool NextRow() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::NextRow();
+ FBSQLITE3_END(false)
+ }
+
+ bool IsOk() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::IsOk();
+ FBSQLITE3_END(false)
+ }
+
+ bool Eof() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::Eof();
+ FBSQLITE3_END(false)
+ }
+
+ int GetColumnCount() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetColumnCount();
+ FBSQLITE3_END(0)
+ }
+
+ int GetInt(int columnIndex, int nullValue = 0) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetInt(columnIndex, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ int GetInt(const wxString& columnName, int nullValue = 0) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetInt(columnName, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ wxLongLong GetInt64(int columnIndex, wxLongLong nullValue = 0) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetInt64(columnIndex, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ wxLongLong GetInt64(const wxString& columnName, wxLongLong nullValue = 0) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetInt64(columnName, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ wxString GetString(int columnIndex, const wxString& nullValue = wxEmptyString) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetString(columnIndex, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ wxString GetString(const wxString& columnName, const wxString& nullValue = wxEmptyString) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetString(columnName, nullValue);
+ FBSQLITE3_END(nullValue)
+ }
+
+ wxString GetAsString(int columnIndex) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetAsString(columnIndex);
+ FBSQLITE3_END(wxEmptyString)
+ }
+
+ wxString GetAsString(const wxString& columnName) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3ResultSet::GetAsString(columnName);
+ FBSQLITE3_END(wxEmptyString)
+ }
+
+ friend class FbSQLite3Statement;
+};
+
+class FbSQLite3Statement: private wxSQLite3Statement
+{
+public:
+ FbSQLite3Statement() {}
+
+ FbSQLite3Statement(const wxSQLite3Statement& statement)
+ : wxSQLite3Statement(statement) {}
+
+ FbSQLite3Statement(const FbSQLite3Statement& statement)
+ : wxSQLite3Statement(statement) {}
+
+ void FTS(int index, const wxString& value);
+
+ void Bind(int paramIndex, const wxString& stringValue) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, stringValue);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, int intValue) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, intValue);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, wxLongLong int64Value) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, int64Value);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, double doubleValue) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, doubleValue);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, const char* charValue) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, charValue);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, const unsigned char* blobValue, int blobLen) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, blobValue, blobLen);
+ FBSQLITE3_END()
+ }
+
+ void Bind(int paramIndex, const wxMemoryBuffer& blobValue) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Bind(paramIndex, blobValue);
+ FBSQLITE3_END()
+ }
+
+ FbSQLite3ResultSet ExecuteQuery() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::ExecuteQuery();
+ FBSQLITE3_END(FbSQLite3ResultSet())
+ }
+
+ int ExecuteUpdate() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::ExecuteUpdate();
+ FBSQLITE3_END(0)
+ }
+
+ void Reset() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Statement::Reset();
+ FBSQLITE3_END()
+ }
+
+ friend class FbSQLite3Database;
+};
+
+class FbSQLite3Database: private wxSQLite3Database
+{
+public:
+ void Open(const wxString& fileName, const wxString& key = wxEmptyString, int flags = WXSQLITE_OPEN_READWRITE | WXSQLITE_OPEN_CREATE) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::Open(fileName, key, flags);
+ FBSQLITE3_END()
+ }
+
+ void Begin(wxSQLite3TransactionType transactionType = WXSQLITE_TRANSACTION_DEFAULT) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::Begin(transactionType);
+ FBSQLITE3_END()
+ }
+
+ bool IsOpen() const {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::IsOpen();
+ FBSQLITE3_END(false)
+ }
+
+ void Close() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::Close();
+ FBSQLITE3_END()
+ }
+
+ void Commit() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::Commit();
+ FBSQLITE3_END()
+ }
+
+ FbSQLite3Statement PrepareStatement(const wxString& sql) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::PrepareStatement(sql);
+ FBSQLITE3_END(FbSQLite3Statement())
+ }
+
+ FbSQLite3ResultSet ExecuteQuery(const wxString& sql) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::ExecuteQuery(sql);
+ FBSQLITE3_END(FbSQLite3ResultSet())
+ }
+
+ int ExecuteSilent(const char* sql) {
+ try { return wxSQLite3Database::ExecuteUpdate(sql); } catch (...) { return 0; }
+ }
+
+ int ExecuteSilent(const wxString& sql) {
+ try { return wxSQLite3Database::ExecuteUpdate(sql); } catch (...) { return 0; }
+ }
+
+ int ExecuteUpdate(const char* sql) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::ExecuteUpdate(sql);
+ FBSQLITE3_END(0)
+ }
+
+ int ExecuteUpdate(const wxString& sql) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::ExecuteUpdate(sql);
+ FBSQLITE3_END(0)
+ }
+
+ int ExecuteScalar(const wxString& sql) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::ExecuteScalar(sql);
+ FBSQLITE3_END(0)
+ }
+
+ bool TableExists(const wxString& tableName, const wxString& databaseName = wxEmptyString) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::TableExists(tableName, databaseName);
+ FBSQLITE3_END(false)
+ }
+
+ bool CreateFunction(const wxString& name, int argCount, wxSQLite3ScalarFunction& function) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::CreateFunction(name, argCount, function);
+ FBSQLITE3_END(false)
+ }
+
+ bool CreateFunction(const wxString& name, int argCount, wxSQLite3AggregateFunction& function) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::CreateFunction(name, argCount, function);
+ FBSQLITE3_END(false)
+ }
+
+ void SetCollation(const wxString& name, wxSQLite3Collation* collation) {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::SetCollation(name, collation);
+ FBSQLITE3_END()
+ }
+
+ void* GetDatabaseHandle() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Database::GetDatabaseHandle();
+ FBSQLITE3_END(NULL)
+ }
+
+ friend class FbSQLite3Transaction;
+};
+
+class FbSQLite3Transaction: private wxSQLite3Transaction
+{
+public:
+ explicit FbSQLite3Transaction(FbSQLite3Database* db, wxSQLite3TransactionType transactionType = WXSQLITE_TRANSACTION_DEFAULT)
+ : wxSQLite3Transaction(db, transactionType) {}
+
+ void Commit() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Transaction::Commit();
+ FBSQLITE3_END()
+ }
+
+ void Rollback() {
+ FBSQLITE3_BEGIN
+ return wxSQLite3Transaction::Commit();
+ FBSQLITE3_END()
+ }
+};
+
+//class FbSQLite3Database:
+
+#endif // __FBSQLITE3_H__
+
+
diff --git a/sources/WxSQLite3/wxsqlite3.cpp b/sources/WxSQLite3/wxsqlite3.cpp deleted file mode 100644 index 2be26eb0..00000000 --- a/sources/WxSQLite3/wxsqlite3.cpp +++ /dev/null @@ -1,4297 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: wxsqlite3.cpp -// Purpose: Implementation of wxSQLite3 classes -// Author: Ulrich Telle -// Modified by: -// Created: 2005-07-06 -// Copyright: (c) Ulrich Telle -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// - -/// \file wxsqlite3.cpp Implementation of the wxSQLite3 class - -#if defined(__GNUG__) && !defined(__APPLE__) -#pragma implementation "wxsqlite3.h" -#endif - -// For compilers that support precompilation, includes "wx/wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - -#ifndef WX_PRECOMP -#include "wx/wx.h" -#endif - -#include "wx/regex.h" - -#include "wx/wxsqlite3.h" -#include "wx/wxsqlite3opt.h" - -// Error handling in wxSQLite3 library -
-#if WXSQLITE_USE_EXCEPTIONS - #define WXSQLITE3_ERROR(code, message, result) throw wxSQLite3Exception(code, message); -#else - void wxSQLite3_Error(int errorCode, const wxString& errorMsg)
- {
- if (errorCode == 9) return; - wxString m_errorMessage =
- wxSQLite3Exception::ErrorCodeAsString(errorCode) + wxT("[") +
- wxString::Format(wxT("%d"), errorCode) + wxT("]: ") +
- wxGetTranslation(errorMsg);
-
- wxLogError(m_errorMessage);
- }
- #define WXSQLITE3_ERROR(code, message, result) wxSQLite3_Error(code, message); return result;
-#endif // WXSQLITE_USE_EXCEPTIONS
- -// Suppress some Visual C++ warnings regarding the default constructor -// for a C struct used only in SQLite modules -#ifdef __VISUALC__ -#pragma warning (disable:4510) -#pragma warning (disable:4610) -#endif - -#if WXSQLITE3_HAVE_CODEC -#define SQLITE_HAS_CODEC 1 -#else -#define SQLITE_HAS_CODEC 0 -#endif - -#include "sqlite3.h" - -// Dynamic loading of the SQLite library - -#if wxUSE_DYNAMIC_SQLITE3_LOAD - -#include "wx/dynlib.h" - -#define DYNFUNC(rcode, rtype, fname, farg, farguse) \ - typedef rtype (*p##fname) farg ; \ - static p##fname s_##fname = NULL; -#include "wx/wxsqlite3dyn.h" -#undef DYNFUNC - -static wxDynamicLibrary s_dll; - -static void InitSQLite3DLL() -{ - if (s_dll.IsLoaded()) - { - return; - } - -#ifdef __WIN32__ - if (! s_dll.Load(wxT("sqlite3"))) -#else - if (! s_dll.Load(wxT("libsqlite3"))) -#endif - { - WXSQLITE3_ERROR(-1, wxT("error loading dynamic library"), );
- } - -#define DYNFUNC(rcode, rtype, fname, farg, farguse) \ - s_##fname = (p##fname) s_dll.GetSymbol(wxT(#fname));\ - if (! s_##fname)\ - {\ - s_dll.Unload();\ - WXSQLITE3_ERROR(-1, wxT("error getting symbol <") wxT(#fname) wxT(">"), );\
- } -#include "wx/wxsqlite3dyn.h" -#undef DYNFUNC - -}; - -#define DYNFUNC(rcode, rtype, fname, farg, farguse) \ - rtype fname farg \ - {\ - InitSQLite3DLL();\ - rcode s_##fname farguse;\ - }; -#include "wx/wxsqlite3dyn.h" -#undef DYNFUNC - -#endif // wxUSE_DYNAMIC_SQLITE3_LOAD - -// Error messages - -#if wxCHECK_VERSION(2,9,0) -const char* wxERRMSG_NODB = wxTRANSLATE("No Database opened"); -const char* wxERRMSG_NOSTMT = wxTRANSLATE("Statement not accessible"); -const char* wxERRMSG_NOMEM = wxTRANSLATE("Out of memory"); -const char* wxERRMSG_DECODE = wxTRANSLATE("Cannot decode binary"); -const char* wxERRMSG_INVALID_INDEX = wxTRANSLATE("Invalid field index"); -const char* wxERRMSG_INVALID_NAME = wxTRANSLATE("Invalid field name"); -const char* wxERRMSG_INVALID_ROW = wxTRANSLATE("Invalid row index"); -const char* wxERRMSG_INVALID_QUERY = wxTRANSLATE("Invalid scalar query"); -const char* wxERRMSG_INVALID_BLOB = wxTRANSLATE("Invalid BLOB handle"); - -const char* wxERRMSG_NORESULT = wxTRANSLATE("Null Results pointer"); -const char* wxERRMSG_BIND_STR = wxTRANSLATE("Error binding string param"); -const char* wxERRMSG_BIND_INT = wxTRANSLATE("Error binding int param"); -const char* wxERRMSG_BIND_INT64 = wxTRANSLATE("Error binding int64 param"); -const char* wxERRMSG_BIND_DBL = wxTRANSLATE("Error binding double param"); -const char* wxERRMSG_BIND_BLOB = wxTRANSLATE("Error binding blob param"); -const char* wxERRMSG_BIND_DATETIME = wxTRANSLATE("Error binding date/time param"); -const char* wxERRMSG_BIND_NULL = wxTRANSLATE("Error binding NULL param"); -const char* wxERRMSG_BIND_ZEROBLOB = wxTRANSLATE("Error binding zero blob param"); -const char* wxERRMSG_BIND_CLEAR = wxTRANSLATE("Error clearing bindings"); -const char* wxERRMSG_NOTOWNED = wxTRANSLATE("Transfer of statement ownership not possible"); - -const char* wxERRMSG_NOMETADATA = wxTRANSLATE("Meta data support not available"); -const char* wxERRMSG_NOCODEC = wxTRANSLATE("Encryption support not available"); -const char* wxERRMSG_NOLOADEXT = wxTRANSLATE("Loadable extension support not available"); -const char* wxERRMSG_NOINCBLOB = wxTRANSLATE("Incremental BLOB support not available"); -const char* wxERRMSG_NOBLOBREBIND = wxTRANSLATE("Rebind BLOB support not available"); -const char* wxERRMSG_NOSAVEPOINT = wxTRANSLATE("Savepoint support not available"); -const char* wxERRMSG_NOBACKUP = wxTRANSLATE("Backup/restore support not available"); -const char* wxERRMSG_NOWAL = wxTRANSLATE("Write Ahead Log support not available"); -const char* wxERRMSG_NOCOLLECTIONS = wxTRANSLATE("Named collection support not available"); - -const char* wxERRMSG_SHARED_CACHE = wxTRANSLATE("Setting SQLite shared cache mode failed"); - -const char* wxERRMSG_INITIALIZE = wxTRANSLATE("Initialization of SQLite failed"); -const char* wxERRMSG_SHUTDOWN = wxTRANSLATE("Shutdown of SQLite failed"); - -const char* wxERRMSG_SOURCEDB_BUSY = wxTRANSLATE("Source database is busy"); -const char* wxERRMSG_DBOPEN_FAILED = wxTRANSLATE("Database open failed"); -const char* wxERRMSG_DBASSIGN_FAILED = wxTRANSLATE("Database assignment failed"); -#else -const wxChar* wxERRMSG_NODB = wxTRANSLATE("No Database opened"); -const wxChar* wxERRMSG_NOSTMT = wxTRANSLATE("Statement not accessible"); -const wxChar* wxERRMSG_NOMEM = wxTRANSLATE("Out of memory"); -const wxChar* wxERRMSG_DECODE = wxTRANSLATE("Cannot decode binary"); -const wxChar* wxERRMSG_INVALID_INDEX = wxTRANSLATE("Invalid field index"); -const wxChar* wxERRMSG_INVALID_NAME = wxTRANSLATE("Invalid field name"); -const wxChar* wxERRMSG_INVALID_ROW = wxTRANSLATE("Invalid row index"); -const wxChar* wxERRMSG_INVALID_QUERY = wxTRANSLATE("Invalid scalar query"); -const wxChar* wxERRMSG_INVALID_BLOB = wxTRANSLATE("Invalid BLOB handle"); - -const wxChar* wxERRMSG_NORESULT = wxTRANSLATE("Null Results pointer"); -const wxChar* wxERRMSG_BIND_STR = wxTRANSLATE("Error binding string param"); -const wxChar* wxERRMSG_BIND_INT = wxTRANSLATE("Error binding int param"); -const wxChar* wxERRMSG_BIND_INT64 = wxTRANSLATE("Error binding int64 param"); -const wxChar* wxERRMSG_BIND_DBL = wxTRANSLATE("Error binding double param"); -const wxChar* wxERRMSG_BIND_BLOB = wxTRANSLATE("Error binding blob param"); -const wxChar* wxERRMSG_BIND_DATETIME = wxTRANSLATE("Error binding date/time param"); -const wxChar* wxERRMSG_BIND_NULL = wxTRANSLATE("Error binding NULL param"); -const wxChar* wxERRMSG_BIND_ZEROBLOB = wxTRANSLATE("Error binding zero blob param"); -const wxChar* wxERRMSG_BIND_CLEAR = wxTRANSLATE("Error clearing bindings"); -const wxChar* wxERRMSG_NOTOWNED = wxTRANSLATE("Transfer of statement ownership not possible"); - -const wxChar* wxERRMSG_NOMETADATA = wxTRANSLATE("Meta data support not available"); -const wxChar* wxERRMSG_NOCODEC = wxTRANSLATE("Encryption support not available"); -const wxChar* wxERRMSG_NOLOADEXT = wxTRANSLATE("Loadable extension support not available"); -const wxChar* wxERRMSG_NOINCBLOB = wxTRANSLATE("Incremental BLOB support not available"); -const wxChar* wxERRMSG_NOBLOBREBIND = wxTRANSLATE("Rebind BLOB support not available"); -const wxChar* wxERRMSG_NOSAVEPOINT = wxTRANSLATE("Savepoint support not available"); -const wxChar* wxERRMSG_NOBACKUP = wxTRANSLATE("Backup/restore support not available"); -const wxChar* wxERRMSG_NOWAL = wxTRANSLATE("Write Ahead Log support not available"); -const wxChar* wxERRMSG_NOCOLLECTIONS = wxTRANSLATE("Named collection support not available"); - -const wxChar* wxERRMSG_SHARED_CACHE = wxTRANSLATE("Setting SQLite shared cache mode failed"); - -const wxChar* wxERRMSG_INITIALIZE = wxTRANSLATE("Initialization of SQLite failed"); -const wxChar* wxERRMSG_SHUTDOWN = wxTRANSLATE("Shutdown of SQLite failed"); - -const wxChar* wxERRMSG_SOURCEDB_BUSY = wxTRANSLATE("Source database is busy"); -const wxChar* wxERRMSG_DBOPEN_FAILED = wxTRANSLATE("Database open failed"); -const wxChar* wxERRMSG_DBASSIGN_FAILED = wxTRANSLATE("Database assignment failed"); -#endif - -// ---------------------------------------------------------------------------- -// inline conversion from wxString to wxLongLong -// ---------------------------------------------------------------------------- - -inline wxLongLong ConvertStringToLongLong(const wxString& str, wxLongLong defValue /*=0*/) -{ - size_t n = str.Length(); - size_t j = 0; - wxLongLong value = 0; - bool negative = false; - - if (str[j] == '-') - { - negative = true; - j++; - } - - while (j < n) - { - if (str[j] < '0' || str[j] > '9') - { - return defValue; - } - value *= 10; - value += (str[j] - '0'); - j++; - } - - return negative ? -value : value; -} - -// ---------------------------------------------------------------------------- -// wxSQLite3Exception: class -// ---------------------------------------------------------------------------- - -wxSQLite3Exception::wxSQLite3Exception(int errorCode, const wxString& errorMsg) - : m_errorCode(errorCode) -{ - m_errorMessage = ErrorCodeAsString(errorCode) + wxT("[") + - wxString::Format(wxT("%d"), errorCode) + wxT("]: ") + - wxGetTranslation(errorMsg); -} - -wxSQLite3Exception::wxSQLite3Exception(const wxSQLite3Exception& e) - : m_errorCode(e.m_errorCode), m_errorMessage(e.m_errorMessage) -{ -} - -const wxString wxSQLite3Exception::ErrorCodeAsString(int errorCode) -{ - switch (errorCode) - { - case SQLITE_OK : return wxT("SQLITE_OK"); - case SQLITE_ERROR : return wxT("SQLITE_ERROR"); - case SQLITE_INTERNAL : return wxT("SQLITE_INTERNAL"); - case SQLITE_PERM : return wxT("SQLITE_PERM"); - case SQLITE_ABORT : return wxT("SQLITE_ABORT"); - case SQLITE_BUSY : return wxT("SQLITE_BUSY"); - case SQLITE_LOCKED : return wxT("SQLITE_LOCKED"); - case SQLITE_NOMEM : return wxT("SQLITE_NOMEM"); - case SQLITE_READONLY : return wxT("SQLITE_READONLY"); - case SQLITE_INTERRUPT : return wxT("SQLITE_INTERRUPT"); - case SQLITE_IOERR : return wxT("SQLITE_IOERR"); - case SQLITE_CORRUPT : return wxT("SQLITE_CORRUPT"); - case SQLITE_NOTFOUND : return wxT("SQLITE_NOTFOUND"); - case SQLITE_FULL : return wxT("SQLITE_FULL"); - case SQLITE_CANTOPEN : return wxT("SQLITE_CANTOPEN"); - case SQLITE_PROTOCOL : return wxT("SQLITE_PROTOCOL"); - case SQLITE_EMPTY : return wxT("SQLITE_EMPTY"); - case SQLITE_SCHEMA : return wxT("SQLITE_SCHEMA"); - case SQLITE_TOOBIG : return wxT("SQLITE_TOOBIG"); - case SQLITE_CONSTRAINT : return wxT("SQLITE_CONSTRAINT"); - case SQLITE_MISMATCH : return wxT("SQLITE_MISMATCH"); - case SQLITE_MISUSE : return wxT("SQLITE_MISUSE"); - case SQLITE_NOLFS : return wxT("SQLITE_NOLFS"); - case SQLITE_AUTH : return wxT("SQLITE_AUTH"); - case SQLITE_FORMAT : return wxT("SQLITE_FORMAT"); - case SQLITE_RANGE : return wxT("SQLITE_RANGE"); - case SQLITE_NOTADB : return wxT("SQLITE_NOTADB"); - case SQLITE_ROW : return wxT("SQLITE_ROW"); - case SQLITE_DONE : return wxT("SQLITE_DONE"); - // Extended error codes - case SQLITE_IOERR_READ : return wxT("SQLITE_IOERR_READ"); - case SQLITE_IOERR_SHORT_READ : return wxT("SQLITE_IOERR_SHORT_READ"); - case SQLITE_IOERR_WRITE : return wxT("SQLITE_IOERR_WRITE"); - case SQLITE_IOERR_FSYNC : return wxT("SQLITE_IOERR_FSYNC"); - case SQLITE_IOERR_DIR_FSYNC : return wxT("SQLITE_IOERR_DIR_FSYNC"); - case SQLITE_IOERR_TRUNCATE : return wxT("SQLITE_IOERR_TRUNCATE"); - case SQLITE_IOERR_FSTAT : return wxT("SQLITE_IOERR_FSTAT"); - case SQLITE_IOERR_UNLOCK : return wxT("SQLITE_IOERR_UNLOCK"); - case SQLITE_IOERR_RDLOCK : return wxT("SQLITE_IOERR_RDLOCK"); - case SQLITE_IOERR_DELETE : return wxT("SQLITE_IOERR_DELETE"); -#if SQLITE_VERSION_NUMBER >= 3004000 - case SQLITE_IOERR_BLOCKED : return wxT("SQLITE_IOERR_BLOCKED"); -#endif -#if SQLITE_VERSION_NUMBER >= 3005001 - case SQLITE_IOERR_NOMEM : return wxT("SQLITE_IOERR_NOMEM"); -#endif -#if SQLITE_VERSION_NUMBER >= 3006000 - case SQLITE_IOERR_ACCESS : return wxT("SQLITE_IOERR_ACCESS"); - case SQLITE_IOERR_CHECKRESERVEDLOCK : return wxT("SQLITE_IOERR_CHECKRESERVEDLOCK"); -#endif -#if SQLITE_VERSION_NUMBER >= 3006002 - case SQLITE_IOERR_LOCK : return wxT("SQLITE_IOERR_LOCK"); -#endif -#if SQLITE_VERSION_NUMBER >= 3006007 - case SQLITE_IOERR_CLOSE : return wxT("SQLITE_IOERR_CLOSE"); - case SQLITE_IOERR_DIR_CLOSE : return wxT("SQLITE_IOERR_DIR_CLOSE"); -#endif -#if SQLITE_VERSION_NUMBER >= 3007000 - case SQLITE_IOERR_SHMOPEN : return wxT("SQLITE_IOERR_SHMOPEN"); - case SQLITE_IOERR_SHMSIZE : return wxT("SQLITE_IOERR_SHMSIZE"); - case SQLITE_IOERR_SHMLOCK : return wxT("SQLITE_IOERR_SHMLOCK"); - case SQLITE_LOCKED_SHAREDCACHE : return wxT("SQLITE_LOCKED_SHAREDCACHE"); - case SQLITE_BUSY_RECOVERY : return wxT("SQLITE_BUSY_RECOVERY"); - case SQLITE_CANTOPEN_NOTEMPDIR : return wxT("SQLITE_CANTOPEN_NOTEMPDIR"); -#endif - - case WXSQLITE_ERROR : return wxT("WXSQLITE_ERROR"); - default : return wxT("UNKNOWN_ERROR"); - } -} - -wxSQLite3Exception::~wxSQLite3Exception() -{ -} - -// ---------------------------------------------------------------------------- -// wxSQLite3StatementBuffer: class providing a statement buffer -// for use with the SQLite3 vmprintf function -// ---------------------------------------------------------------------------- - -wxSQLite3StatementBuffer::wxSQLite3StatementBuffer() -{ - m_buffer = 0; -} - -wxSQLite3StatementBuffer::~wxSQLite3StatementBuffer() -{ - Clear(); -} - -void wxSQLite3StatementBuffer::Clear() -{ - if (m_buffer) - { - sqlite3_free(m_buffer); - m_buffer = 0; - } - -} - -const char* wxSQLite3StatementBuffer::Format(const char* format, ...) -{ - Clear(); - va_list va; - va_start(va, format); - m_buffer = sqlite3_vmprintf(format, va); - va_end(va); - return m_buffer; -} - -const char* wxSQLite3StatementBuffer::FormatV(const char* format, va_list va) -{ - Clear(); - m_buffer = sqlite3_vmprintf(format, va); - return m_buffer; -} - -// ---------------------------------------------------------------------------- -// wxSQLite3ResultSet: class providing access to the result set of a query -// ---------------------------------------------------------------------------- - -wxSQLite3ResultSet::wxSQLite3ResultSet() -{ - m_db = 0; - m_stmt = 0; - m_eof = true; - m_first = true; - m_cols = 0; - m_ownStmt = false; -} - -wxSQLite3ResultSet::wxSQLite3ResultSet(const wxSQLite3ResultSet& resultSet) -{ - m_db = resultSet.m_db; - m_stmt = resultSet.m_stmt; - // Only one object can own the statement - const_cast<wxSQLite3ResultSet&>(resultSet).m_stmt = 0; - m_eof = resultSet.m_eof; - m_first = resultSet.m_first; - m_cols = resultSet.m_cols; - m_ownStmt = resultSet.m_ownStmt; -} - -wxSQLite3ResultSet::wxSQLite3ResultSet(void* db, - void* stmt, - bool eof, - bool first, - bool ownStmt /*=true*/) -{ - m_db = db; - m_stmt = stmt; - m_eof = eof; - m_first = first; - m_cols = sqlite3_column_count((sqlite3_stmt*) m_stmt); - m_ownStmt = ownStmt; -} - -wxSQLite3ResultSet::~wxSQLite3ResultSet() -{ - try - { - Finalize(); - } - catch (...) - { - } -} - -wxSQLite3ResultSet& wxSQLite3ResultSet::operator=(const wxSQLite3ResultSet& resultSet) -{ - if (this != &resultSet) - { - try - { - Finalize(); - } - catch (...) - { - } - m_db = resultSet.m_db; - m_stmt = resultSet.m_stmt; - // Only one object can own the statement - const_cast<wxSQLite3ResultSet&>(resultSet).m_stmt = 0; - m_eof = resultSet.m_eof; - m_first = resultSet.m_first; - m_cols = resultSet.m_cols; - m_ownStmt = resultSet.m_ownStmt; - } - return *this; -} - -int wxSQLite3ResultSet::GetColumnCount() -{ - CheckStmt(); - return m_cols; -} - -wxString wxSQLite3ResultSet::GetAsString(int columnIndex) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = (const char*) sqlite3_column_text((sqlite3_stmt*) m_stmt, columnIndex); - return wxString::FromUTF8(localValue); -} - -wxString wxSQLite3ResultSet::GetAsString(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - const char* localValue = (const char*) sqlite3_column_text((sqlite3_stmt*) m_stmt, columnIndex); - return wxString::FromUTF8(localValue); -} - -int wxSQLite3ResultSet::GetInt(int columnIndex, int nullValue /* = 0 */) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return nullValue; - } - else - { - return sqlite3_column_int((sqlite3_stmt*) m_stmt, columnIndex); - } -} - - -int wxSQLite3ResultSet::GetInt(const wxString& columnName, int nullValue /* = 0 */) -{ - int columnIndex = FindColumnIndex(columnName); - return GetInt(columnIndex, nullValue); -} - -wxLongLong wxSQLite3ResultSet::GetInt64(int columnIndex, wxLongLong nullValue /* = 0 */) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return nullValue; - } - else - { - return wxLongLong(sqlite3_column_int64((sqlite3_stmt*) m_stmt, columnIndex)); - } -} - -wxLongLong wxSQLite3ResultSet::GetInt64(const wxString& columnName, wxLongLong nullValue /* = 0 */) -{ - int columnIndex = FindColumnIndex(columnName); - return GetInt64(columnIndex, nullValue); -} - -double wxSQLite3ResultSet::GetDouble(int columnIndex, double nullValue /* = 0.0 */) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return nullValue; - } - else - { - return sqlite3_column_double((sqlite3_stmt*) m_stmt, columnIndex); - } -} - -double wxSQLite3ResultSet::GetDouble(const wxString& columnName, double nullValue /* = 0.0 */) -{ - int columnIndex = FindColumnIndex(columnName); - return GetDouble(columnIndex, nullValue); -} - -wxString wxSQLite3ResultSet::GetString(int columnIndex, const wxString& nullValue /* = wxEmptyString */) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return nullValue; - } - else - { - const char* localValue = (const char*) sqlite3_column_text((sqlite3_stmt*) m_stmt, columnIndex); - return wxString::FromUTF8(localValue); - } -} - -wxString wxSQLite3ResultSet::GetString(const wxString& columnName, const wxString& nullValue /* = wxEmptyString */) -{ - int columnIndex = FindColumnIndex(columnName); - return GetString(columnIndex, nullValue); -} - -const unsigned char* wxSQLite3ResultSet::GetBlob(int columnIndex, int& len) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, NULL);
- } - - len = sqlite3_column_bytes((sqlite3_stmt*) m_stmt, columnIndex); - return (const unsigned char*) sqlite3_column_blob((sqlite3_stmt*) m_stmt, columnIndex); -} - -const unsigned char* wxSQLite3ResultSet::GetBlob(const wxString& columnName, int& len) -{ - int columnIndex = FindColumnIndex(columnName); - return GetBlob(columnIndex, len); -} - -wxMemoryBuffer& wxSQLite3ResultSet::GetBlob(int columnIndex, wxMemoryBuffer& buffer) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, buffer);
- } - - int len = sqlite3_column_bytes((sqlite3_stmt*) m_stmt, columnIndex); - const void* blob = sqlite3_column_blob((sqlite3_stmt*) m_stmt, columnIndex); - buffer.AppendData((void*) blob, (size_t) len); - return buffer; -} - -wxMemoryBuffer& wxSQLite3ResultSet::GetBlob(const wxString& columnName, wxMemoryBuffer& buffer) -{ - int columnIndex = FindColumnIndex(columnName); - return GetBlob(columnIndex, buffer); -} - -wxDateTime wxSQLite3ResultSet::GetDate(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - wxDateTime date; - const wxChar* result = date.ParseDate(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } - } -} - -wxDateTime wxSQLite3ResultSet::GetDate(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetDate(columnIndex); -} - - -wxDateTime wxSQLite3ResultSet::GetTime(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - wxDateTime date; - const wxChar* result = date.ParseTime(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } - } -} - -wxDateTime wxSQLite3ResultSet::GetTime(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetTime(columnIndex); -} - -wxDateTime wxSQLite3ResultSet::GetDateTime(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - wxDateTime date; - const wxChar* result = date.ParseDateTime(GetString(columnIndex)); - if (result != NULL) - { - date.SetMillisecond(0); - return date; - } - else - { - return wxInvalidDateTime; - } - } -} - -wxDateTime wxSQLite3ResultSet::GetDateTime(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetDateTime(columnIndex); -} - -wxDateTime wxSQLite3ResultSet::GetTimestamp(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - wxDateTime date; - const wxChar* result = date.ParseDateTime(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } - } -} - -wxDateTime wxSQLite3ResultSet::GetTimestamp(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetTimestamp(columnIndex); -} - -wxDateTime wxSQLite3ResultSet::GetNumericDateTime(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - wxLongLong value = GetInt64(columnIndex); - return wxDateTime(value); - } -} - -wxDateTime wxSQLite3ResultSet::GetNumericDateTime(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetNumericDateTime(columnIndex); -} - -wxDateTime wxSQLite3ResultSet::GetJulianDayNumber(int columnIndex) -{ - if (GetColumnType(columnIndex) == SQLITE_NULL) - { - return wxInvalidDateTime; - } - else - { - double value = GetDouble(columnIndex); - return wxDateTime(value); - } -} - -wxDateTime wxSQLite3ResultSet::GetJulianDayNumber(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetJulianDayNumber(columnIndex); -} - -bool wxSQLite3ResultSet::GetBool(int columnIndex) -{ - return GetInt(columnIndex) != 0; -} - -bool wxSQLite3ResultSet::GetBool(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetBool(columnIndex); -} - -bool wxSQLite3ResultSet::IsNull(int columnIndex) -{ - return (GetColumnType(columnIndex) == SQLITE_NULL); -} - -bool wxSQLite3ResultSet::IsNull(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return (GetColumnType(columnIndex) == SQLITE_NULL); -} - -int wxSQLite3ResultSet::FindColumnIndex(const wxString& columnName) -{ - CheckStmt(); - - wxCharBuffer strColumnName = columnName.ToUTF8(); - const char* localColumnName = strColumnName; - - if (columnName.Len() > 0) - { - for (int columnIndex = 0; columnIndex < m_cols; columnIndex++) - { - const char* temp = sqlite3_column_name((sqlite3_stmt*) m_stmt, columnIndex); - - if (strcmp(localColumnName, temp) == 0) - { - return columnIndex; - } - } - } - - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, -1);
-} - -wxString wxSQLite3ResultSet::GetColumnName(int columnIndex) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_name((sqlite3_stmt*) m_stmt, columnIndex); - return wxString::FromUTF8(localValue); -} - -wxString wxSQLite3ResultSet::GetDeclaredColumnType(int columnIndex) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_decltype((sqlite3_stmt*) m_stmt, columnIndex); - return wxString::FromUTF8(localValue); -} - -int wxSQLite3ResultSet::GetColumnType(int columnIndex) -{ - CheckStmt(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, -1);
- } - - return sqlite3_column_type((sqlite3_stmt*) m_stmt, columnIndex); -} - -bool wxSQLite3ResultSet::Eof() -{ - CheckStmt(); - return m_eof; -} - -bool wxSQLite3ResultSet::NextRow() -{ - CheckStmt(); - - int rc; - if (m_first) - { - m_first = false; - rc = (m_eof) ? SQLITE_DONE : SQLITE_ROW; - } - else - { - rc = sqlite3_step((sqlite3_stmt*) m_stmt); - } - - if (rc == SQLITE_DONE) // no more rows - { - m_eof = true; - return false; - } - else if (rc == SQLITE_ROW) // more rows - { - return true; - } - else - { - rc = sqlite3_finalize((sqlite3_stmt*) m_stmt); - m_stmt = 0; - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), false);
- } -} - -void wxSQLite3ResultSet::Finalize() -{ - if (m_stmt && m_ownStmt) - { - int rc = sqlite3_finalize((sqlite3_stmt*) m_stmt); - m_stmt = 0; - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -} - -wxString wxSQLite3ResultSet::GetSQL() -{ - wxString sqlString = wxEmptyString; -#if SQLITE_VERSION_NUMBER >= 3005003 - CheckStmt(); - const char* sqlLocal = sqlite3_sql((sqlite3_stmt*) m_stmt); - if (sqlLocal != NULL) sqlString = wxString::FromUTF8(sqlLocal); -#endif - return sqlString; -} - -bool wxSQLite3ResultSet::IsOk() -{ - return (m_db != 0) && (m_stmt != 0); -} - -void wxSQLite3ResultSet::CheckStmt() -{ - if (m_stmt == 0) - { - return;
- } -} - -wxString wxSQLite3ResultSet::GetDatabaseName(int columnIndex) -{ -#if WXSQLITE3_HAVE_METADATA - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_database_name((sqlite3_stmt*) m_stmt, columnIndex); - if (localValue != NULL) - return wxString::FromUTF8(localValue); - else - return wxEmptyString; -#else - wxUnusedVar(columnIndex); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
-#endif -} - -wxString wxSQLite3ResultSet::GetTableName(int columnIndex) -{ -#if WXSQLITE3_HAVE_METADATA - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_table_name((sqlite3_stmt*) m_stmt, columnIndex); - if (localValue != NULL) - return wxString::FromUTF8(localValue); - else - return wxEmptyString; -#else - wxUnusedVar(columnIndex); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
-#endif -} - -wxString wxSQLite3ResultSet::GetOriginName(int columnIndex) -{ -#if WXSQLITE3_HAVE_METADATA - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_origin_name((sqlite3_stmt*) m_stmt, columnIndex); - if (localValue != NULL) - return wxString::FromUTF8(localValue); - else - return wxEmptyString; -#else - wxUnusedVar(columnIndex); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
-#endif -} - -// ---------------------------------------------------------------------------- -// wxSQLite3Table: class holding the complete result set of a query -// ---------------------------------------------------------------------------- - -wxSQLite3Table::wxSQLite3Table() -{ - m_results = 0; - m_rows = 0; - m_cols = 0; - m_currentRow = 0; -} - -wxSQLite3Table::wxSQLite3Table(const wxSQLite3Table& table) -{ - m_results = table.m_results; - // Only one object can own the results - const_cast<wxSQLite3Table&>(table).m_results = 0; - m_rows = table.m_rows; - m_cols = table.m_cols; - m_currentRow = table.m_currentRow; -} - -wxSQLite3Table::wxSQLite3Table(char** results, int rows, int cols) -{ - m_results = results; - m_rows = rows; - m_cols = cols; - m_currentRow = 0; -} - -wxSQLite3Table::~wxSQLite3Table() -{ - try - { - Finalize(); - } - catch (...) - { - } -} - -wxSQLite3Table& wxSQLite3Table::operator=(const wxSQLite3Table& table) -{ - if (this != &table) - { - try - { - Finalize(); - } - catch (...) - { - } - m_results = table.m_results; - // Only one object can own the results - const_cast<wxSQLite3Table&>(table).m_results = 0; - m_rows = table.m_rows; - m_cols = table.m_cols; - m_currentRow = table.m_currentRow; - } - return *this; -} - -void wxSQLite3Table::Finalize() -{ - if (m_results) - { - sqlite3_free_table(m_results); - m_results = 0; - } -} - -int wxSQLite3Table::GetColumnCount() -{ - CheckResults(); - return m_cols; -} - -int wxSQLite3Table::GetRowCount() -{ - CheckResults(); - return m_rows; -} - -int wxSQLite3Table::FindColumnIndex(const wxString& columnName) -{ - CheckResults(); - - wxCharBuffer strColumnName = columnName.ToUTF8(); - const char* localColumnName = strColumnName; - - if (columnName.Len() > 0) - { - for (int columnIndex = 0; columnIndex < m_cols; columnIndex++) - { - if (strcmp(localColumnName, m_results[columnIndex]) == 0) - { - return columnIndex; - } - } - } - - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_NAME, -1);
-} - -wxString wxSQLite3Table::GetAsString(int columnIndex) -{ - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - int nIndex = (m_currentRow*m_cols) + m_cols + columnIndex; - const char* localValue = m_results[nIndex]; - return wxString::FromUTF8(localValue); -} - -wxString wxSQLite3Table::GetAsString(const wxString& columnName) -{ - int index = FindColumnIndex(columnName); - return GetAsString(index); -} - -int wxSQLite3Table::GetInt(int columnIndex, int nullValue /* = 0 */) -{ - if (IsNull(columnIndex)) - { - return nullValue; - } - else - { - long value = nullValue; - GetAsString(columnIndex).ToLong(&value); - return (int) value; - } -} - -int wxSQLite3Table::GetInt(const wxString& columnName, int nullValue /* = 0 */) -{ - if (IsNull(columnName)) - { - return nullValue; - } - else - { - long value = nullValue; - GetAsString(columnName).ToLong(&value); - return (int) value; - } -} - -wxLongLong wxSQLite3Table::GetInt64(int columnIndex, wxLongLong nullValue /* = 0 */) -{ - if (IsNull(columnIndex)) - { - return nullValue; - } - else - { - return ConvertStringToLongLong(GetAsString(columnIndex), nullValue); - } -} - -wxLongLong wxSQLite3Table::GetInt64(const wxString& columnName, wxLongLong nullValue /* = 0 */) -{ - if (IsNull(columnName)) - { - return nullValue; - } - else - { - return ConvertStringToLongLong(GetAsString(columnName), nullValue); - } -} - -// Since SQLite uses internally a locale independent string representation -// of double values, we need to provide our own conversion procedure using -// always a point as the decimal separator. -// The following code duplicates a SQLite utility function with minor modifications. - -static double wxSQLite3AtoF(const char *z) -{ - int sign = 1; - long double v1 = 0.0; - int nSignificant = 0; - while (isspace(*(unsigned char*)z)) - { - ++z; - } - if (*z == '-') - { - sign = -1; - ++z; - } - else if (*z == '+') - { - ++z; - } - while (*z == '0') - { - ++z; - } - while (isdigit(*(unsigned char*)z)) - { - v1 = v1*10.0 + (*z - '0'); - ++z; - ++nSignificant; - } - if (*z == '.') - { - long double divisor = 1.0; - ++z; - if (nSignificant == 0) - { - while (*z == '0') - { - divisor *= 10.0; - ++z; - } - } - while (isdigit(*(unsigned char*)z)) - { - if (nSignificant < 18) - { - v1 = v1*10.0 + (*z - '0'); - divisor *= 10.0; - ++nSignificant; - } - ++z; - } - v1 /= divisor; - } - if (*z=='e' || *z=='E') - { - int esign = 1; - int eval = 0; - long double scale = 1.0; - ++z; - if (*z == '-') - { - esign = -1; - ++z; - } - else if (*z == '+') - { - ++z; - } - while (isdigit(*(unsigned char*)z)) - { - eval = eval*10 + *z - '0'; - ++z; - } - while (eval >= 64) { scale *= 1.0e+64; eval -= 64; } - while (eval >= 16) { scale *= 1.0e+16; eval -= 16; } - while (eval >= 4) { scale *= 1.0e+4; eval -= 4; } - while (eval >= 1) { scale *= 1.0e+1; eval -= 1; } - if (esign < 0) - { - v1 /= scale; - } - else - { - v1 *= scale; - } - } - return (double) ((sign < 0) ? -v1 : v1); -} - -double wxSQLite3Table::GetDouble(int columnIndex, double nullValue /* = 0.0 */) -{ - if (IsNull(columnIndex)) - { - return nullValue; - } - else - { - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, nullValue);
- } - int nIndex = (m_currentRow*m_cols) + m_cols + columnIndex; - return wxSQLite3AtoF(m_results[nIndex]); - } -} - -double wxSQLite3Table::GetDouble(const wxString& columnName, double nullValue /* = 0.0 */) -{ - int index = FindColumnIndex(columnName); - return GetDouble(index, nullValue); -} - -wxString wxSQLite3Table::GetString(int columnIndex, const wxString& nullValue /* = wxEmptyString */) -{ - if (IsNull(columnIndex)) - { - return nullValue; - } - else - { - return GetAsString(columnIndex); - } -} - -wxString wxSQLite3Table::GetString(const wxString& columnName, const wxString& nullValue /* = wxEmptyString */) -{ - if (IsNull(columnName)) - { - return nullValue; - } - else - { - return GetAsString(columnName); - } -} - -wxDateTime wxSQLite3Table::GetDate(int columnIndex) -{ - wxDateTime date; - const wxChar* result = date.ParseDate(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } -} - -wxDateTime wxSQLite3Table::GetDate(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetDate(columnIndex); -} - -wxDateTime wxSQLite3Table::GetTime(int columnIndex) -{ - wxDateTime date; - const wxChar* result = date.ParseTime(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } -} - -wxDateTime wxSQLite3Table::GetTime(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetTime(columnIndex); -} - -wxDateTime wxSQLite3Table::GetDateTime(int columnIndex) -{ - wxDateTime date; - const wxChar* result = date.ParseDateTime(GetString(columnIndex)); - if (result != NULL) - { - return date; - } - else - { - return wxInvalidDateTime; - } -} - -wxDateTime wxSQLite3Table::GetDateTime(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetDateTime(columnIndex); -} - -bool wxSQLite3Table::GetBool(int columnIndex) -{ - return GetInt(columnIndex) != 0; -} - -bool wxSQLite3Table::GetBool(const wxString& columnName) -{ - int columnIndex = FindColumnIndex(columnName); - return GetBool(columnIndex); -} - -bool wxSQLite3Table::IsNull(int columnIndex) -{ - CheckResults(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, false);
- } - - int index = (m_currentRow*m_cols) + m_cols + columnIndex; - const char* localValue = m_results[index]; - return (localValue == 0); -} - -bool wxSQLite3Table::IsNull(const wxString& columnName) -{ - int index = FindColumnIndex(columnName); - return IsNull(index); -} - -wxString wxSQLite3Table::GetColumnName(int columnIndex) -{ - CheckResults(); - - if (columnIndex < 0 || columnIndex > m_cols-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = m_results[columnIndex]; - return wxString::FromUTF8(localValue); -} - -void wxSQLite3Table::SetRow(int row) -{ - CheckResults(); - - if (row < 0 || row > m_rows-1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_ROW, );
- } - - m_currentRow = row; -} - -bool wxSQLite3Table::IsOk() -{ - return (m_results != 0); -} - -void wxSQLite3Table::CheckResults() -{ - if (m_results == 0) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NORESULT, );
- } -} - -// ---------------------------------------------------------------------------- -// wxSQLite3Statement: class holding a prepared statement -// ---------------------------------------------------------------------------- - -wxSQLite3Statement::wxSQLite3Statement() -{ - m_db = 0; - m_stmt = 0; - m_hasOwnership = false; -} - -wxSQLite3Statement::wxSQLite3Statement(const wxSQLite3Statement& statement) -{ - m_db = statement.m_db; - m_stmt = statement.m_stmt; - m_hasOwnership = statement.m_hasOwnership; - // Only one object can own prepared statement - const_cast<wxSQLite3Statement&>(statement).m_hasOwnership = false; -} - -wxSQLite3Statement::wxSQLite3Statement(void* db, void* stmt) -{ - m_db = db; - m_stmt = stmt; - m_hasOwnership = true; -} - -wxSQLite3Statement::~wxSQLite3Statement() -{ - try - { - Finalize(); - } - catch (...) - { - } -} - -wxSQLite3Statement& wxSQLite3Statement::operator=(const wxSQLite3Statement& statement) -{ - if (this != &statement) - { - try - { - Finalize(); - } - catch (...) - { - } - m_db = statement.m_db; - m_stmt = statement.m_stmt; - m_hasOwnership = statement.m_hasOwnership; - // Only one object can own prepared statement - const_cast<wxSQLite3Statement&>(statement).m_hasOwnership = false; - } - return *this; -} - -int wxSQLite3Statement::ExecuteUpdate() -{ - CheckDatabase(); - CheckStmt(); - - const char* localError=0; - - int rc = sqlite3_step((sqlite3_stmt*) m_stmt); - - if (rc == SQLITE_DONE) - { - int rowsChanged = sqlite3_changes((sqlite3*) m_db); - - rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - - if (rc != SQLITE_OK) - { - localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), -1);
- } - - return rowsChanged; - } - else - { - rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), -1);
- } -} - -wxSQLite3ResultSet wxSQLite3Statement::ExecuteQuery(bool transferStatementOwnership) -{ - CheckDatabase(); - CheckStmt(); - if (transferStatementOwnership) - { - if (m_hasOwnership) - { - m_hasOwnership = false; - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOTOWNED, wxSQLite3ResultSet());
- } - } - - int rc = sqlite3_step((sqlite3_stmt*) m_stmt); - - if (rc == SQLITE_DONE) // no more rows - { - return wxSQLite3ResultSet(m_db, m_stmt, true/*eof*/, true/*first*/, transferStatementOwnership); - } - else if (rc == SQLITE_ROW) // one or more rows - { - return wxSQLite3ResultSet(m_db, m_stmt, false/*eof*/, true/*first*/, transferStatementOwnership); - } - else - { - rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3ResultSet());
- } -} - -int wxSQLite3Statement::GetParamCount() -{ - CheckStmt(); - return sqlite3_bind_parameter_count((sqlite3_stmt*) m_stmt); -} - -int wxSQLite3Statement::GetParamIndex(const wxString& paramName) -{ - CheckStmt(); - - wxCharBuffer strParamName = paramName.ToUTF8(); - const char* localParamName = strParamName; - - return sqlite3_bind_parameter_index((sqlite3_stmt*) m_stmt, localParamName); -} - -wxString wxSQLite3Statement::GetParamName(int paramIndex) -{ - CheckStmt(); - const char* localParamName = sqlite3_bind_parameter_name((sqlite3_stmt*) m_stmt, paramIndex); - return wxString::FromUTF8(localParamName); -} - -void wxSQLite3Statement::Bind(int paramIndex, const wxString& stringValue) -{ - CheckStmt(); - - wxCharBuffer strStringValue = stringValue.ToUTF8(); - const char* localStringValue = strStringValue; - - int rc = sqlite3_bind_text((sqlite3_stmt*) m_stmt, paramIndex, localStringValue, -1, SQLITE_TRANSIENT); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_STR, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, int intValue) -{ - CheckStmt(); - int rc = sqlite3_bind_int((sqlite3_stmt*) m_stmt, paramIndex, intValue); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_INT, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, wxLongLong int64Value) -{ - CheckStmt(); - int rc = sqlite3_bind_int64((sqlite3_stmt*) m_stmt, paramIndex, int64Value.GetValue()); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_INT64, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, double doubleValue) -{ - CheckStmt(); - int rc = sqlite3_bind_double((sqlite3_stmt*) m_stmt, paramIndex, doubleValue); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_DBL, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, const char* charValue) -{ - CheckStmt(); - int rc = sqlite3_bind_text((sqlite3_stmt*) m_stmt, paramIndex, charValue, -1, SQLITE_TRANSIENT); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_STR, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, const unsigned char* blobValue, int blobLen) -{ - CheckStmt(); - int rc = sqlite3_bind_blob((sqlite3_stmt*) m_stmt, paramIndex, - (const void*)blobValue, blobLen, SQLITE_TRANSIENT); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_BLOB, );
- } -} - -void wxSQLite3Statement::Bind(int paramIndex, const wxMemoryBuffer& blobValue) -{ - CheckStmt(); - int blobLen = (int) blobValue.GetDataLen(); - int rc = sqlite3_bind_blob((sqlite3_stmt*) m_stmt, paramIndex, - (const void*)blobValue.GetData(), blobLen, SQLITE_TRANSIENT); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_BLOB, );
- } -} - -void wxSQLite3Statement::BindDate(int paramIndex, const wxDateTime& date) -{ - if (date.IsValid()) - { - Bind(paramIndex,date.FormatISODate()); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindTime(int paramIndex, const wxDateTime& time) -{ - if (time.IsValid()) - { - Bind(paramIndex,time.FormatISOTime()); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindDateTime(int paramIndex, const wxDateTime& datetime) -{ - if (datetime.IsValid()) - { - Bind(paramIndex,datetime.Format(wxT("%Y-%m-%d %H:%M:%S"))); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindTimestamp(int paramIndex, const wxDateTime& timestamp) -{ - if (timestamp.IsValid()) - { - Bind(paramIndex,timestamp.Format(wxT("%Y-%m-%d %H:%M:%S.%l"))); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindNumericDateTime(int paramIndex, const wxDateTime& datetime) -{ - if (datetime.IsValid()) - { - Bind(paramIndex, datetime.GetValue()); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindJulianDayNumber(int paramIndex, const wxDateTime& datetime) -{ - if (datetime.IsValid()) - { - Bind(paramIndex, datetime.GetJulianDayNumber()); - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } -} - -void wxSQLite3Statement::BindBool(int paramIndex, bool value) -{ - Bind(paramIndex, value ? 1 : 0); -} - -void wxSQLite3Statement::BindNull(int paramIndex) -{ - CheckStmt(); - int rc = sqlite3_bind_null((sqlite3_stmt*) m_stmt, paramIndex); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_NULL, );
- } -} - -void wxSQLite3Statement::BindZeroBlob(int paramIndex, int blobSize) -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - CheckStmt(); - int rc = sqlite3_bind_zeroblob((sqlite3_stmt*) m_stmt, paramIndex, blobSize); - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_ZEROBLOB, );
- } -#else - wxUnusedVar(paramIndex); - wxUnusedVar(blobSize); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
-#endif -} - -void wxSQLite3Statement::ClearBindings() -{ - CheckStmt(); -#if 0 // missing in SQLite DLL - int rc = sqlite3_clear_bindings((sqlite3_stmt*) m_stmt); - - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_BIND_CLEAR, );
- } -#else - for (int paramIndex = 1; paramIndex <= GetParamCount(); paramIndex++) - { - BindNull(paramIndex); - } -#endif -} - -wxString wxSQLite3Statement::GetSQL() -{ - wxString sqlString = wxEmptyString; -#if SQLITE_VERSION_NUMBER >= 3005003 - CheckStmt(); - const char* sqlLocal = sqlite3_sql((sqlite3_stmt*) m_stmt); - if (sqlLocal != NULL) sqlString = wxString::FromUTF8(sqlLocal); -#endif - return sqlString; -} - -void wxSQLite3Statement::Reset() -{ - if (m_stmt) - { - int rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -} - -bool wxSQLite3Statement::IsReadOnly() -{ -#if SQLITE_VERSION_NUMBER >= 3007004 - CheckStmt(); - return sqlite3_stmt_readonly((sqlite3_stmt*) m_stmt) != 0; -#else - return false; -#endif -} - -void wxSQLite3Statement::Finalize() -{ - if (m_stmt && m_hasOwnership) - { - int rc = sqlite3_finalize((sqlite3_stmt*) m_stmt); - m_stmt = 0; - m_hasOwnership = false; - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -} - -bool wxSQLite3Statement::IsOk() -{ - return (m_db != 0) && (m_stmt != 0); -} - -void wxSQLite3Statement::CheckDatabase() -{ - if (m_db == 0) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NODB, );
- } -} - -void wxSQLite3Statement::CheckStmt() -{ - if (m_stmt == 0) - { - return;
- } -} - -// - -wxSQLite3Blob::wxSQLite3Blob() -{ - m_db = NULL; - m_blob = NULL; - m_ok = false; - m_writable = false; -} - -wxSQLite3Blob::wxSQLite3Blob(const wxSQLite3Blob& blob) -{ - m_db = blob.m_db; - m_blob = blob.m_blob; - m_ok = blob.m_ok; - m_writable = blob.m_writable; -} - -wxSQLite3Blob& wxSQLite3Blob::operator=(const wxSQLite3Blob& blob) -{ - if (this != &blob) - { - try - { - Finalize(); - } - catch (...) - { - } - m_db = blob.m_db; - m_blob = blob.m_blob; - m_ok = blob.m_ok; - m_writable = blob.m_writable; - // only one blob can own the blob handle - const_cast<wxSQLite3Blob&>(blob).m_ok = false; - } - return *this; -} - -wxSQLite3Blob::wxSQLite3Blob(void* db, void* blobHandle, bool writable) -{ - m_db = db; - m_blob = blobHandle; - m_ok = true; - m_writable = writable; -} - -wxSQLite3Blob::~wxSQLite3Blob() -{ - try - { - Finalize(); - } - catch (...) - { - } -} - -wxMemoryBuffer& wxSQLite3Blob::Read(wxMemoryBuffer& blobValue, int length, int offset) -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - CheckBlob(); - char* localBuffer = (char*) blobValue.GetAppendBuf((size_t) length); - int rc = sqlite3_blob_read((sqlite3_blob*) m_blob, localBuffer, length, offset); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), blobValue);
- } - - blobValue.UngetAppendBuf((size_t) length); -#else - wxUnusedVar(blobValue); - wxUnusedVar(length); - wxUnusedVar(offset); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, blobValue);
-#endif - return blobValue; -} - -void wxSQLite3Blob::Write(const wxMemoryBuffer& blobValue, int offset) -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - CheckBlob(); - if (m_writable) - { - int blobLen = (int) blobValue.GetDataLen(); - int rc = sqlite3_blob_write((sqlite3_blob*) m_blob, - (const void*) blobValue.GetData(), blobLen, offset); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB, );
- } -#else - wxUnusedVar(blobValue); - wxUnusedVar(offset); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
-#endif -} - -bool wxSQLite3Blob::IsOk() -{ - return m_ok; -} - -bool wxSQLite3Blob::IsReadOnly() -{ - return !m_writable; -} - -int wxSQLite3Blob::GetSize() -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - CheckBlob(); - return sqlite3_blob_bytes((sqlite3_blob*) m_blob); -#else - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, 0);
- return 0; -#endif -} - -void wxSQLite3Blob::Rebind(wxLongLong rowid) -{ -#if SQLITE_VERSION_NUMBER >= 3007004 - CheckBlob(); - int rc = sqlite3_blob_reopen((sqlite3_blob*) m_blob, rowid.GetValue()); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(rowid); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBLOBREBIND, );
-#endif -} - -void wxSQLite3Blob::Finalize() -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - if (m_ok) - { - int rc = sqlite3_blob_close((sqlite3_blob*) m_blob); - m_blob = NULL; - m_ok = false; - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -#else - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
-#endif -} - -void wxSQLite3Blob::CheckBlob() -{ - if (!m_ok) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB, );
- } -} - -// ---------------------------------------------------------------------------- -// wxSQLite3Database: class holding a SQLite3 database object -// ---------------------------------------------------------------------------- - -bool wxSQLite3Database::ms_sharedCacheEnabled = false; - -void -wxSQLite3Database::SetSharedCache(bool enable) -{ - int flag = (enable) ? 1 : 0; - int rc = sqlite3_enable_shared_cache(flag); - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_SHARED_CACHE, );
- } - ms_sharedCacheEnabled = enable; -} - -#if WXSQLITE3_HAVE_CODEC -bool wxSQLite3Database::ms_hasEncryptionSupport = true; -#else -bool wxSQLite3Database::ms_hasEncryptionSupport = false; -#endif - -#if WXSQLITE3_HAVE_METADATA -bool wxSQLite3Database::ms_hasMetaDataSupport = true; -#else -bool wxSQLite3Database::ms_hasMetaDataSupport = false; -#endif - -#if WXSQLITE3_HAVE_LOAD_EXTENSION -bool wxSQLite3Database::ms_hasLoadExtSupport = true; -#else -bool wxSQLite3Database::ms_hasLoadExtSupport = false; -#endif - -#if WXSQLITE3_USE_NAMED_COLLECTIONS -bool wxSQLite3Database::ms_hasNamedCollectionSupport = true; -#else -bool wxSQLite3Database::ms_hasNamedCollectionSupport = false; -#endif - -#if SQLITE_VERSION_NUMBER >= 3004000 -bool wxSQLite3Database::ms_hasIncrementalBlobSupport = true; -#else -bool wxSQLite3Database::ms_hasIncrementalBlobSupport = false; -#endif - -#if SQLITE_VERSION_NUMBER >= 3006008 -bool wxSQLite3Database::ms_hasSavepointSupport = true; -#else -bool wxSQLite3Database::ms_hasSavepointSupport = false; -#endif - -#if SQLITE_VERSION_NUMBER >= 3006011 -bool wxSQLite3Database::ms_hasBackupSupport = true; -#else -bool wxSQLite3Database::ms_hasBackupSupport = false; -#endif - -#if SQLITE_VERSION_NUMBER >= 3007000 -bool wxSQLite3Database::ms_hasWriteAheadLogSupport = true; -#else -bool wxSQLite3Database::ms_hasWriteAheadLogSupport = false; -#endif - -bool -wxSQLite3Database::HasEncryptionSupport() -{ - return ms_hasEncryptionSupport; -} - -bool -wxSQLite3Database::HasMetaDataSupport() -{ - return ms_hasMetaDataSupport; -} - -bool -wxSQLite3Database::HasLoadExtSupport() -{ - return ms_hasLoadExtSupport; -} - -bool -wxSQLite3Database::HasNamedCollectionSupport() -{ - return ms_hasNamedCollectionSupport; -} - -bool -wxSQLite3Database::HasIncrementalBlobSupport() -{ - return ms_hasIncrementalBlobSupport; -} - -bool -wxSQLite3Database::HasSavepointSupport() -{ - return ms_hasSavepointSupport; -} - -bool -wxSQLite3Database::HasBackupSupport() -{ - return ms_hasBackupSupport; -} - -bool -wxSQLite3Database::HasWriteAheadLogSupport() -{ - return ms_hasWriteAheadLogSupport; -} - -wxSQLite3Database::wxSQLite3Database() -{ - m_db = 0; - m_busyTimeoutMs = 60000; // 60 seconds - m_isEncrypted = false; -} - -wxSQLite3Database::wxSQLite3Database(const wxSQLite3Database& db) -{ - m_db = db.m_db; - m_busyTimeoutMs = 60000; // 60 seconds - m_isEncrypted = false; -} - -wxSQLite3Database::~wxSQLite3Database() -{ - Close(); -} - -wxSQLite3Database& wxSQLite3Database::operator=(const wxSQLite3Database& db) -{ - if (this != &db) - { - if (m_db == 0) - { - m_db = db.m_db; - m_busyTimeoutMs = 60000; // 60 seconds - m_isEncrypted = db.m_isEncrypted; - } - else - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_DBASSIGN_FAILED, *this);
- } - } - return *this; -} - -void wxSQLite3Database::Open(const wxString& fileName, const wxString& key, int flags) -{ - wxCharBuffer strLocalKey = key.ToUTF8(); - const char* localKey = strLocalKey; - wxMemoryBuffer binaryKey; - if (key.Length() > 0) - { - binaryKey.AppendData((void*) localKey, strlen(localKey)); - } - Open(fileName, binaryKey, flags); -} - -void wxSQLite3Database::Open(const wxString& fileName, const wxMemoryBuffer& key, int flags) -{ - wxCharBuffer strFileName = fileName.ToUTF8(); - const char* localFileName = strFileName; - - int rc = sqlite3_open_v2((const char*) localFileName, (sqlite3**) &m_db, flags, NULL); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - rc = sqlite3_extended_result_codes((sqlite3*) m_db, 1); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - -#if WXSQLITE3_HAVE_CODEC - if (key.GetDataLen() > 0) - { - rc = sqlite3_key((sqlite3*) m_db, key.GetData(), (int) key.GetDataLen()); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - m_isEncrypted = true; - } -#else - wxUnusedVar(key); -#endif - - SetBusyTimeout(m_busyTimeoutMs); -} - -bool wxSQLite3Database::IsOpen() const -{ - return (m_db != NULL); -} - -void wxSQLite3Database::Close() -{ - if (m_db) - { -#if SQLITE_VERSION_NUMBER >= 3006000 -// Unfortunately the following code leads to a crash if the RTree module is used -// therefore it is disabled for now -#if 0 - // Finalize all unfinalized prepared statements - sqlite3_stmt *pStmt; - while( (pStmt = sqlite3_next_stmt((sqlite3*) m_db, 0))!=0 ) - { - sqlite3_finalize(pStmt); - } -#endif -#endif - sqlite3_close((sqlite3*) m_db); - m_db = 0; - m_isEncrypted = false; - } -} - -void wxSQLite3Database::Backup(const wxString& targetFileName, const wxString& key, const wxString& sourceDatabaseName) -{ - wxCharBuffer strLocalKey = key.ToUTF8(); - const char* localKey = strLocalKey; - wxMemoryBuffer binaryKey; - if (key.Length() > 0) - { - binaryKey.AppendData((void*) localKey, strlen(localKey)); - } - Backup(targetFileName, binaryKey, sourceDatabaseName); -} - -void wxSQLite3Database::Backup(const wxString& targetFileName, const wxMemoryBuffer& key, const wxString& sourceDatabaseName) -{ -#if SQLITE_VERSION_NUMBER >= 3006011 - CheckDatabase(); - - wxCharBuffer strFileName = targetFileName.ToUTF8(); - const char* localTargetFileName = strFileName; - wxCharBuffer strDatabaseName = sourceDatabaseName.ToUTF8(); - const char* localSourceDatabaseName = strDatabaseName; - - sqlite3* pDest; - sqlite3_backup* pBackup; - int rc; - rc = sqlite3_open(localTargetFileName, &pDest); - if (rc != SQLITE_OK) - { - sqlite3_close(pDest); - WXSQLITE3_ERROR(rc, wxERRMSG_DBOPEN_FAILED, );
- } -#if WXSQLITE3_HAVE_CODEC - if (key.GetDataLen() > 0) - { - rc = sqlite3_key(pDest, key.GetData(), (int) key.GetDataLen()); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) pDest); - sqlite3_close(pDest); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -#else - wxUnusedVar(key); -#endif - - pBackup = sqlite3_backup_init(pDest, "main", (sqlite3*) m_db, localSourceDatabaseName); - if (pBackup == 0) - { - const char* localError = sqlite3_errmsg(pDest); - sqlite3_close(pDest); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - do - { - rc = sqlite3_backup_step(pBackup, 10); -#if 0 - xProgress(sqlite3_backup_remaining(pBackup), - sqlite3_backup_pagecount(pBackup)); -#endif - if (rc == SQLITE_BUSY || rc == SQLITE_LOCKED) - { - sqlite3_sleep(250); - } - } - while (rc == SQLITE_OK || rc == SQLITE_BUSY || rc == SQLITE_LOCKED); - - sqlite3_backup_finish(pBackup); - if (rc == SQLITE_DONE) - { - sqlite3_close(pDest); - } - else - { - const char* localError = sqlite3_errmsg(pDest); - sqlite3_close(pDest); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(targetFileName); - wxUnusedVar(sourceDatabaseName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBACKUP, );
-#endif -} - -void wxSQLite3Database::Restore(const wxString& sourceFileName, const wxString& key, const wxString& targetDatabaseName) -{ - wxCharBuffer strLocalKey = key.ToUTF8(); - const char* localKey = strLocalKey; - wxMemoryBuffer binaryKey; - if (key.Length() > 0) - { - binaryKey.AppendData((void*) localKey, strlen(localKey)); - } - Restore(sourceFileName, binaryKey, targetDatabaseName); -} - -void wxSQLite3Database::Restore(const wxString& sourceFileName, const wxMemoryBuffer& key, const wxString& targetDatabaseName) -{ -#if SQLITE_VERSION_NUMBER >= 3006011 - CheckDatabase(); - - wxCharBuffer strFileName = sourceFileName.ToUTF8(); - const char* localSourceFileName = strFileName; - wxCharBuffer strDatabaseName = targetDatabaseName.ToUTF8(); - const char* localTargetDatabaseName = strDatabaseName; - - sqlite3* pSrc; - sqlite3_backup* pBackup; - int rc; - int nTimeout = 0; - - rc = sqlite3_open(localSourceFileName, &pSrc); - if (rc != SQLITE_OK) - { - sqlite3_close(pSrc); - WXSQLITE3_ERROR(rc, wxERRMSG_DBOPEN_FAILED, );
- } -#if WXSQLITE3_HAVE_CODEC - if (key.GetDataLen() > 0) - { - rc = sqlite3_key(pSrc, key.GetData(), (int) key.GetDataLen()); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) pSrc); - sqlite3_close(pSrc); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } -#else - wxUnusedVar(key); -#endif - - pBackup = sqlite3_backup_init((sqlite3*) m_db, localTargetDatabaseName, pSrc, "main"); - if (pBackup == 0) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - sqlite3_close(pSrc); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - while ((rc = sqlite3_backup_step(pBackup, 100)) == SQLITE_OK || rc == SQLITE_BUSY) - { - if (rc == SQLITE_BUSY) - { - if (nTimeout++ >= 3) break; - sqlite3_sleep(100); - } - } - sqlite3_backup_finish(pBackup); - if (rc == SQLITE_DONE) - { - sqlite3_close(pSrc); - } - else if (rc == SQLITE_BUSY || rc == SQLITE_LOCKED) - { - sqlite3_close(pSrc); - WXSQLITE3_ERROR(rc, wxERRMSG_SOURCEDB_BUSY, );
- } - else - { - const char* localError = sqlite3_errmsg(pSrc); - sqlite3_close(pSrc); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(sourceFileName); - wxUnusedVar(targetDatabaseName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBACKUP, );
-#endif -} - -void wxSQLite3Database::Begin(wxSQLite3TransactionType transactionType) -{ - wxString sql; - switch (transactionType) - { - case WXSQLITE_TRANSACTION_DEFERRED: - sql << wxT("begin deferred transaction"); - break; - case WXSQLITE_TRANSACTION_IMMEDIATE: - sql << wxT("begin immediate transaction"); - break; - case WXSQLITE_TRANSACTION_EXCLUSIVE: - sql << wxT("begin exclusive transaction"); - break; - default: - sql << wxT("begin transaction"); - break; - } - ExecuteUpdate(sql); -} - -void wxSQLite3Database::Commit() -{ - ExecuteUpdate("commit transaction"); -} - -void wxSQLite3Database::Rollback(const wxString& savepointName) -{ -#if SQLITE_VERSION_NUMBER >= 3006008 - if (savepointName.IsEmpty()) - { -#endif - ExecuteUpdate("rollback transaction"); -#if SQLITE_VERSION_NUMBER >= 3006008 - } - else - { - ExecuteUpdate(wxString(wxT("rollback transaction to savepoint "))+savepointName); - } -#endif -} - -bool wxSQLite3Database::GetAutoCommit() -{ - CheckDatabase(); - return sqlite3_get_autocommit((sqlite3*) m_db) != 0; -} - -void wxSQLite3Database::Savepoint(const wxString& savepointName) -{ -#if SQLITE_VERSION_NUMBER >= 3006008 - ExecuteUpdate(wxString(wxT("savepoint "))+savepointName); -#else - wxUnusedVar(savepointName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT, );
-#endif -} - -void wxSQLite3Database::ReleaseSavepoint(const wxString& savepointName) -{ -#if SQLITE_VERSION_NUMBER >= 3006008 - ExecuteUpdate(wxString(wxT("release savepoint "))+savepointName); -#else - wxUnusedVar(savepointName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT, );
-#endif -} - -wxSQLite3Statement wxSQLite3Database::PrepareStatement(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return PrepareStatement(localSql); -} - -wxSQLite3Statement wxSQLite3Database::PrepareStatement(const wxSQLite3StatementBuffer& sql) -{ - return PrepareStatement((const char*) sql); -} - -wxSQLite3Statement wxSQLite3Database::PrepareStatement(const char* sql) -{ - CheckDatabase(); - sqlite3_stmt* stmt = (sqlite3_stmt*) Prepare(sql); - return wxSQLite3Statement(m_db, stmt); -} - -bool wxSQLite3Database::TableExists(const wxString& tableName, const wxString& databaseName) -{ - wxString sql; - if (databaseName.IsEmpty()) - { - sql = wxT("select count(*) from sqlite_master where type='table' and name like ?"); - } - else - { - sql = wxString(wxT("select count(*) from ")) + databaseName + wxString(wxT(".sqlite_master where type='table' and name like ?")); - } - wxSQLite3Statement stmt = PrepareStatement(sql); - stmt.Bind(1, tableName); - wxSQLite3ResultSet resultSet = stmt.ExecuteQuery(); - long value = 0; - resultSet.GetAsString(0).ToLong(&value); - return (value > 0); -} - -bool wxSQLite3Database::TableExists(const wxString& tableName, wxArrayString& databaseNames) -{ - wxArrayString databaseList; - GetDatabaseList(databaseList); - - bool found = false; - size_t count = databaseList.GetCount(); - if (count > 0) - { - size_t j; - for (j = 0; j < count; j++) - { - if (TableExists(tableName, databaseList.Item(j))) - { - found = true; - databaseNames.Add(databaseList.Item(j)); - } - } - } - return found; -} - -void wxSQLite3Database::GetDatabaseList(wxArrayString& databaseNames) -{ - databaseNames.Empty(); - wxSQLite3ResultSet resultSet = ExecuteQuery("PRAGMA database_list;"); - while (resultSet.NextRow()) - { - databaseNames.Add(resultSet.GetString(1)); - } -} - -void wxSQLite3Database::GetDatabaseList(wxArrayString& databaseNames, wxArrayString& databaseFiles) -{ - databaseNames.Empty(); - databaseFiles.Empty(); - wxSQLite3ResultSet resultSet = ExecuteQuery("PRAGMA database_list;"); - while (resultSet.NextRow()) - { - databaseNames.Add(resultSet.GetString(1)); - databaseFiles.Add(resultSet.GetString(2)); - } -} - -bool wxSQLite3Database::EnableForeignKeySupport(bool enable) -{ - if (enable) - { - ExecuteUpdate("PRAGMA foreign_keys=ON;"); - } - else - { - ExecuteUpdate("PRAGMA foreign_keys=OFF;"); - } - bool enabled = IsForeignKeySupportEnabled(); - return (enable && enabled) || (!enable && !enabled); -} - -bool wxSQLite3Database::IsForeignKeySupportEnabled() -{ - bool enabled = false; - wxSQLite3ResultSet resultSet = ExecuteQuery("PRAGMA foreign_keys;"); - if (resultSet.NextRow()) - { - enabled = (resultSet.GetInt(0) == 1); - } - return enabled; -} - -wxSQLite3JournalMode -wxSQLite3Database::SetJournalMode(wxSQLite3JournalMode journalMode, const wxString& database) -{ - wxString mode = ConvertJournalMode(journalMode); - wxString query = wxT("PRAGMA "); - if (!database.IsEmpty()) - { - query += database; - query += wxT("."); - } - query += wxT("journal_mode="); - query += mode; - query += wxT(";"); - wxSQLite3ResultSet resultSet = ExecuteQuery(query); - if (resultSet.NextRow()) - { - mode = resultSet.GetString(0); - } - return ConvertJournalMode(mode); -} - -wxSQLite3JournalMode -wxSQLite3Database::GetJournalMode(const wxString& database) -{ - wxString mode = wxT("DELETE"); - wxString query = wxT("PRAGMA "); - if (!database.IsEmpty()) - { - query += database; - query += wxT("."); - } - query += wxT("journal_mode;"); - wxSQLite3ResultSet resultSet = ExecuteQuery(query); - if (resultSet.NextRow()) - { - mode = resultSet.GetString(0); - } - return ConvertJournalMode(mode); -} - -/* static */ -wxString wxSQLite3Database::ConvertJournalMode(wxSQLite3JournalMode mode) -{ - wxString journalMode; - if (mode == WXSQLITE_JOURNALMODE_DELETE) journalMode = wxT("DELETE"); - else if (mode == WXSQLITE_JOURNALMODE_PERSIST) journalMode = wxT("PERSIST"); - else if (mode == WXSQLITE_JOURNALMODE_OFF) journalMode = wxT("OFF"); - else if (mode == WXSQLITE_JOURNALMODE_TRUNCATE) journalMode = wxT("TRUNCATE"); - else if (mode == WXSQLITE_JOURNALMODE_MEMORY) journalMode = wxT("MEMORY"); - else if (mode == WXSQLITE_JOURNALMODE_WAL) journalMode = wxT("WAL"); - else journalMode = wxT("DELETE"); - return journalMode; -} - -/* static */ -wxSQLite3JournalMode wxSQLite3Database::ConvertJournalMode(const wxString& mode) -{ - wxSQLite3JournalMode journalMode; - if (mode.IsSameAs(wxT("DELETE"))) journalMode = WXSQLITE_JOURNALMODE_DELETE; - else if (mode.IsSameAs(wxT("PERSIST"))) journalMode = WXSQLITE_JOURNALMODE_PERSIST; - else if (mode.IsSameAs(wxT("OFF"))) journalMode = WXSQLITE_JOURNALMODE_OFF; - else if (mode.IsSameAs(wxT("TRUNCATE"))) journalMode = WXSQLITE_JOURNALMODE_TRUNCATE; - else if (mode.IsSameAs(wxT("MEMORY"))) journalMode = WXSQLITE_JOURNALMODE_MEMORY; - else if (mode.IsSameAs(wxT("WAL"))) journalMode = WXSQLITE_JOURNALMODE_WAL; - else journalMode = WXSQLITE_JOURNALMODE_DELETE; - return journalMode; -} - -bool wxSQLite3Database::CheckSyntax(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return CheckSyntax(localSql); -} - -bool wxSQLite3Database::CheckSyntax(const wxSQLite3StatementBuffer& sql) -{ - return CheckSyntax((const char*) sql); -} - -bool wxSQLite3Database::CheckSyntax(const char* sql) -{ - return sqlite3_complete(sql) != 0; -} - -int wxSQLite3Database::ExecuteUpdate(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return ExecuteUpdate(localSql); -} - -int wxSQLite3Database::ExecuteUpdate(const wxSQLite3StatementBuffer& sql) -{ - return ExecuteUpdate((const char*) sql); -} - -int wxSQLite3Database::ExecuteUpdate(const char* sql) -{ - CheckDatabase(); - - char* localError=0; - - int rc = sqlite3_exec((sqlite3*) m_db, sql, 0, 0, &localError); - - if (rc == SQLITE_OK) - { - return sqlite3_changes((sqlite3*) m_db); - } - else - { - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), 0);
- } -} - -wxSQLite3ResultSet wxSQLite3Database::ExecuteQuery(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return ExecuteQuery(localSql); -} - -wxSQLite3ResultSet wxSQLite3Database::ExecuteQuery(const wxSQLite3StatementBuffer& sql) -{ - return ExecuteQuery((const char*) sql); -} - -wxSQLite3ResultSet wxSQLite3Database::ExecuteQuery(const char* sql) -{ - CheckDatabase(); - - sqlite3_stmt* stmt = (sqlite3_stmt*) Prepare(sql); - - int rc = sqlite3_step(stmt); - - if (rc == SQLITE_DONE) // no rows - { - return wxSQLite3ResultSet(m_db, stmt, true /* eof */); - } - else if (rc == SQLITE_ROW) // one or more rows - { - return wxSQLite3ResultSet(m_db, stmt, false /* eof */); - } - else - { - rc = sqlite3_finalize(stmt); - const char* localError= sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3ResultSet());
- } -} - -int wxSQLite3Database::ExecuteScalar(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return ExecuteScalar(localSql); -} - -int wxSQLite3Database::ExecuteScalar(const wxSQLite3StatementBuffer& sql) -{ - return ExecuteScalar((const char*) sql); -} - -int wxSQLite3Database::ExecuteScalar(const char* sql) -{ - wxSQLite3ResultSet resultSet = ExecuteQuery(sql); - - if (resultSet.Eof() || resultSet.GetColumnCount() < 1) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_QUERY, 0);
- } - - long value = 0; - resultSet.GetAsString(0).ToLong(&value); - return (int) value; -} - -wxSQLite3Table wxSQLite3Database::GetTable(const wxString& sql) -{ - wxCharBuffer strSql = sql.ToUTF8(); - const char* localSql = strSql; - return GetTable(localSql); -} - -wxSQLite3Table wxSQLite3Database::GetTable(const wxSQLite3StatementBuffer& sql) -{ - return GetTable((const char*) sql); -} - -wxSQLite3Table wxSQLite3Database::GetTable(const char* sql) -{ - CheckDatabase(); - - char* localError=0; - char** results=0; - int rc; - int rows(0); - int cols(0); - - rc = sqlite3_get_table((sqlite3*) m_db, sql, &results, &rows, &cols, &localError); - - if (rc == SQLITE_OK) - { - return wxSQLite3Table(results, rows, cols); - } - else - { - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3Table());
- } -} - -wxLongLong wxSQLite3Database::GetLastRowId() -{ - CheckDatabase(); - return wxLongLong(sqlite3_last_insert_rowid((sqlite3*) m_db)); -} - -wxSQLite3Blob wxSQLite3Database::GetReadOnlyBlob(wxLongLong rowId, - const wxString& columnName, - const wxString& tableName, - const wxString& dbName) -{ - return GetBlob(rowId, columnName, tableName, dbName, false); -} - -wxSQLite3Blob wxSQLite3Database::GetWritableBlob(wxLongLong rowId, - const wxString& columnName, - const wxString& tableName, - const wxString& dbName) -{ - return GetBlob(rowId, columnName, tableName, dbName, true); -} - -wxSQLite3Blob wxSQLite3Database::GetBlob(wxLongLong rowId, - const wxString& columnName, - const wxString& tableName, - const wxString& dbName, - bool writable) -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - wxCharBuffer strColumnName = columnName.ToUTF8(); - const char* localColumnName = strColumnName; - wxCharBuffer strTableName = tableName.ToUTF8(); - const char* localTableName = strTableName; - wxCharBuffer strDbName = dbName.ToUTF8(); - const char* localDbName = (!dbName.IsEmpty()) ? (const char*) strDbName : (const char*) NULL; - int flags = (writable) ? 1 : 0; - sqlite3_blob* blobHandle; - CheckDatabase(); - int rc = sqlite3_blob_open((sqlite3*) m_db, localDbName, localTableName, localColumnName, rowId.GetValue(), flags, &blobHandle); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3Blob());
- } - return wxSQLite3Blob(m_db, (void*) blobHandle, writable); -#else - wxUnusedVar(rowId); - wxUnusedVar(columnName); - wxUnusedVar(tableName); - wxUnusedVar(dbName); - wxUnusedVar(writable); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, wxSQLite3Blob());
- return NULL; -#endif -} - -void wxSQLite3Database::Interrupt() -{ - CheckDatabase(); - sqlite3_interrupt((sqlite3*) m_db); -} - -void wxSQLite3Database::SetBusyTimeout(int nMillisecs) -{ - CheckDatabase(); - m_busyTimeoutMs = nMillisecs; - sqlite3_busy_timeout((sqlite3*) m_db, m_busyTimeoutMs); -} - -wxString wxSQLite3Database::GetVersion() -{ - return wxString::FromUTF8(sqlite3_libversion()); -} - -wxString wxSQLite3Database::GetSourceId() -{ -#if SQLITE_VERSION_NUMBER >= 3006018 - return wxString::FromUTF8(sqlite3_sourceid()); -#else - return wxEmptyString; -#endif -} - -bool wxSQLite3Database::CompileOptionUsed(const wxString& optionName) -{ -#if SQLITE_VERSION_NUMBER >= 3006023 - wxCharBuffer strOption = optionName.ToUTF8(); - const char* localOption = strOption; - return sqlite3_compileoption_used(localOption) == 1; -#else - return false; -#endif -} - -wxString wxSQLite3Database::GetCompileOptionName(int optionIndex) -{ -#if SQLITE_VERSION_NUMBER >= 3006023 - const char* unknownOption = ""; - const char* optionName = sqlite3_compileoption_get(optionIndex); - if (optionName == NULL) - { - optionName = unknownOption; - } - return wxString::FromUTF8(optionName); -#else - return wxEmptyString; -#endif -} - -bool wxSQLite3Database::CreateFunction(const wxString& funcName, int argCount, wxSQLite3ScalarFunction& function) -{ - CheckDatabase(); - wxCharBuffer strFuncName = funcName.ToUTF8(); - const char* localFuncName = strFuncName; - int rc = sqlite3_create_function((sqlite3*) m_db, localFuncName, argCount, - SQLITE_UTF8, &function, - (void (*)(sqlite3_context*,int,sqlite3_value**)) wxSQLite3FunctionContext::ExecScalarFunction, NULL, NULL); - return rc == SQLITE_OK; -} - -bool wxSQLite3Database::CreateFunction(const wxString& funcName, int argCount, wxSQLite3AggregateFunction& function) -{ - CheckDatabase(); - wxCharBuffer strFuncName = funcName.ToUTF8(); - const char* localFuncName = strFuncName; - int rc = sqlite3_create_function((sqlite3*) m_db, localFuncName, argCount, - SQLITE_UTF8, &function, - NULL, - (void (*)(sqlite3_context*,int,sqlite3_value**)) wxSQLite3FunctionContext::ExecAggregateStep, - (void (*)(sqlite3_context*)) wxSQLite3FunctionContext::ExecAggregateFinalize); - return rc == SQLITE_OK; -} - -bool wxSQLite3Database::SetAuthorizer(wxSQLite3Authorizer& authorizer) -{ - CheckDatabase(); - int rc = sqlite3_set_authorizer((sqlite3*) m_db, wxSQLite3FunctionContext::ExecAuthorizer, &authorizer); - return rc == SQLITE_OK; -} - -void wxSQLite3Database::SetCommitHook(wxSQLite3Hook* commitHook) -{ - CheckDatabase(); - if (commitHook) - { - sqlite3_commit_hook((sqlite3*) m_db, (int(*)(void*)) wxSQLite3FunctionContext::ExecCommitHook, commitHook); - } - else - { - sqlite3_commit_hook((sqlite3*) m_db, (int(*)(void*)) NULL, NULL); - } -} - -void wxSQLite3Database::SetRollbackHook(wxSQLite3Hook* rollbackHook) -{ - CheckDatabase(); - if (rollbackHook) - { - sqlite3_rollback_hook((sqlite3*) m_db, (void(*)(void*)) wxSQLite3FunctionContext::ExecRollbackHook, rollbackHook); - } - else - { - sqlite3_rollback_hook((sqlite3*) m_db, (void(*)(void*)) NULL, NULL); - } -} - -void wxSQLite3Database::SetUpdateHook(wxSQLite3Hook* updateHook) -{ - CheckDatabase(); - if (updateHook) - { - sqlite3_update_hook((sqlite3*) m_db, (void(*)(void*,int,const char*,const char*, wxsqlite_int64)) wxSQLite3FunctionContext::ExecUpdateHook, updateHook); - } - else - { - sqlite3_update_hook((sqlite3*) m_db, (void(*)(void*,int,const char*,const char*, wxsqlite_int64)) NULL, NULL); - } -} - -void wxSQLite3Database::SetWriteAheadLogHook(wxSQLite3Hook* walHook) -{ -#if SQLITE_VERSION_NUMBER >= 3007000 - CheckDatabase(); - if (walHook) - { - walHook->SetDatabase(this); - sqlite3_wal_hook((sqlite3*) m_db, (int(*)(void *,sqlite3*,const char*,int)) wxSQLite3FunctionContext::ExecWriteAheadLogHook, walHook); - } - else - { - sqlite3_wal_hook((sqlite3*) m_db, (int(*)(void *,sqlite3*,const char*,int)) NULL, NULL); - } -#else - wxUnusedVar(walHook); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
-#endif -} - -void wxSQLite3Database::WriteAheadLogCheckpoint(const wxString& database) -{ -#if SQLITE_VERSION_NUMBER >= 3007000 - CheckDatabase(); - wxCharBuffer strDatabase = database.ToUTF8(); - const char* localDatabase = strDatabase; - int rc = sqlite3_wal_checkpoint((sqlite3*) m_db, localDatabase); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(database); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
-#endif -} - -void wxSQLite3Database::AutoWriteAheadLogCheckpoint(int frameCount) -{ -#if SQLITE_VERSION_NUMBER >= 3007000 - CheckDatabase(); - int rc = sqlite3_wal_autocheckpoint((sqlite3*) m_db, frameCount); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(frameCount); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
-#endif -} - -void wxSQLite3Database::SetCollation(const wxString& collationName, wxSQLite3Collation* collation) -{ - CheckDatabase(); - wxCharBuffer strCollationName = collationName.ToUTF8(); - const char* localCollationName = strCollationName; - int rc; - if (collation) - { - rc = sqlite3_create_collation((sqlite3*) m_db, localCollationName, SQLITE_UTF8, collation, (int(*)(void*,int,const void*,int,const void*)) wxSQLite3Database::ExecComparisonWithCollation); - } - else - { - rc = sqlite3_create_collation((sqlite3*) m_db, localCollationName, SQLITE_UTF8, NULL, (int(*)(void*,int,const void*,int,const void*)) NULL); - } -} - -void wxSQLite3Database::SetCollationNeededCallback() -{ - CheckDatabase(); - int rc = sqlite3_collation_needed((sqlite3*) m_db, this, (void(*)(void*,sqlite3*,int,const char*)) wxSQLite3Database::ExecCollationNeeded); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -} - -void wxSQLite3Database::CheckDatabase() -{ - if (!m_db) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NODB, );
- } -} - -void* wxSQLite3Database::Prepare(const char* sql) -{ - CheckDatabase(); - - const char* tail=0; - sqlite3_stmt* stmt; - - int rc = sqlite3_prepare_v2((sqlite3*) m_db, sql, -1, &stmt, &tail); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), NULL);
- } - - return stmt; -} - -/* static */ -int wxSQLite3Database::ExecComparisonWithCollation(void* collation, - int len1, const void* text1, - int len2, const void* text2) -{ - wxString locText1 = wxString::FromUTF8((const char*) text1, (size_t) len1); - wxString locText2 = wxString::FromUTF8((const char*) text2, (size_t) len2); - return ((wxSQLite3Collation*) collation)->Compare(locText1, locText2); -} - -void wxSQLite3Database::ExecCollationNeeded(void* db, void*, int, const char* collationName) -{ - wxString locCollation = wxString::FromUTF8((const char*) collationName); - ((wxSQLite3Database*) db)->SetNeededCollation(locCollation); -} - -void wxSQLite3Database::GetMetaData(const wxString& databaseName, const wxString& tableName, const wxString& columnName, - wxString* dataType, wxString* collation, bool* notNull, bool* primaryKey, bool* autoIncrement) -{ -#if WXSQLITE3_HAVE_METADATA - wxCharBuffer strDatabaseName = databaseName.ToUTF8(); - const char* localDatabaseName = strDatabaseName; - if (databaseName == wxEmptyString) localDatabaseName = NULL; - wxCharBuffer strTableName = tableName.ToUTF8(); - const char* localTableName = strTableName; - wxCharBuffer strColumnName = columnName.ToUTF8(); - const char* localColumnName = strColumnName; - const char* localDataType; - const char* localCollation; - int localNotNull; - int localPrimaryKey; - int localAutoIncrement; - int rc = sqlite3_table_column_metadata((sqlite3*) m_db, localDatabaseName, localTableName, localColumnName, - &localDataType, &localCollation, &localNotNull, &localPrimaryKey, &localAutoIncrement); - - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - if (dataType != NULL) *dataType = wxString::FromUTF8(localDataType); - if (collation != NULL) *collation = wxString::FromUTF8(localCollation); - - if (notNull != NULL) *notNull = (localNotNull != 0); - if (primaryKey != NULL) *primaryKey = (localPrimaryKey != 0); - if (autoIncrement != NULL) *autoIncrement = (localAutoIncrement != 0); -#else - wxUnusedVar(databaseName); - wxUnusedVar(tableName); - wxUnusedVar(columnName); - wxUnusedVar(dataType); - wxUnusedVar(collation); - wxUnusedVar(notNull); - wxUnusedVar(primaryKey); - wxUnusedVar(autoIncrement); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, );
-#endif -} - -void wxSQLite3Database::LoadExtension(const wxString& fileName, const wxString& entryPoint) -{ -#if WXSQLITE3_HAVE_LOAD_EXTENSION - wxCharBuffer strFileName = fileName.ToUTF8(); - const char* localFileName = strFileName; - wxCharBuffer strEntryPoint = entryPoint.ToUTF8(); - const char* localEntryPoint = strEntryPoint; - - int rc = sqlite3_load_extension((sqlite3 *) m_db, localFileName, localEntryPoint, NULL); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(fileName); - wxUnusedVar(entryPoint); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT, );
-#endif -} - -void wxSQLite3Database::EnableLoadExtension(bool enable) -{ -#if WXSQLITE3_HAVE_LOAD_EXTENSION - int onoff = (enable) ? 1 : 0; - int rc = sqlite3_enable_load_extension((sqlite3 *) m_db, onoff); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(enable); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT, );
-#endif -} - -void wxSQLite3Database::ReKey(const wxString& newKey) -{ -#if WXSQLITE3_HAVE_CODEC - wxCharBuffer strLocalNewKey = newKey.ToUTF8(); - const char* localNewKey = strLocalNewKey; - wxMemoryBuffer binaryNewKey; - if (newKey.Length() > 0) - { - binaryNewKey.AppendData((void*) localNewKey, strlen(localNewKey)); - } - ReKey(binaryNewKey); -#else - wxUnusedVar(newKey); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCODEC, );
-#endif -} - -void wxSQLite3Database::ReKey(const wxMemoryBuffer& newKey) -{ -#if WXSQLITE3_HAVE_CODEC - int rc = sqlite3_rekey((sqlite3*) m_db, newKey.GetData(), (int) newKey.GetDataLen()); - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } -#else - wxUnusedVar(newKey); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCODEC, );
-#endif -} - -int wxSQLite3Database::GetLimit(wxSQLite3LimitType id) -{ - int value = -1; -#if SQLITE_VERSION_NUMBER >= 3005008 - CheckDatabase(); - if (id >= WXSQLITE_LIMIT_LENGTH && id <= WXSQLITE_LIMIT_VARIABLE_NUMBER) - { - value = sqlite3_limit((sqlite3 *) m_db, id, -1); - } -#else - wxUnusedVar(id); -#endif - return value; -} - -int wxSQLite3Database::SetLimit(wxSQLite3LimitType id, int newValue) -{ - int value = -1; -#if SQLITE_VERSION_NUMBER >= 3005008 - CheckDatabase(); - if (id >= WXSQLITE_LIMIT_LENGTH && id <= WXSQLITE_LIMIT_VARIABLE_NUMBER) - { - value = sqlite3_limit((sqlite3 *) m_db, id, newValue); - } -#else - wxUnusedVar(id); - wxUnusedVar(newValue); -#endif - return value; -} - -static const wxChar* limitCodeString[] = -{ wxT("SQLITE_LIMIT_LENGTH"), wxT("SQLITE_LIMIT_SQL_LENGTH"), - wxT("SQLITE_LIMIT_COLUMN"), wxT("SQLITE_LIMIT_EXPR_DEPTH"), - wxT("SQLITE_LIMIT_COMPOUND_SELECT"), wxT("SQLITE_LIMIT_VDBE_OP"), - wxT("SQLITE_LIMIT_FUNCTION_ARG"), wxT("SQLITE_LIMIT_ATTACHED"), - wxT("SQLITE_LIMIT_LIKE_PATTERN_LENGTH"), wxT("SQLITE_LIMIT_VARIABLE_NUMBER"), - wxT("SQLITE_LIMIT_TRIGGER_DEPTH") -}; - - -/* static */ -wxString wxSQLite3Database::LimitTypeToString(wxSQLite3LimitType type) -{ - const wxChar* limitString = wxT("Unknown"); - if (type >= WXSQLITE_LIMIT_LENGTH && type <= WXSQLITE_LIMIT_VARIABLE_NUMBER) - { - limitString = limitCodeString[type]; - } - return wxString(limitString); -} - -/* static */ -void wxSQLite3Database::InitializeSQLite() -{ -#if SQLITE_VERSION_NUMBER >= 3006000 - int rc = sqlite3_initialize(); - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_INITIALIZE, );
- } -#endif -} - -/* static */ -void wxSQLite3Database::ShutdownSQLite() -{ -#if SQLITE_VERSION_NUMBER >= 3006000 - int rc = sqlite3_shutdown(); - if (rc != SQLITE_OK) - { - WXSQLITE3_ERROR(rc, wxERRMSG_SHUTDOWN, );
- } -#endif -} - -/* static */ -bool wxSQLite3Database::Randomness(int n, wxMemoryBuffer& random) -{ - bool ok = false; -#if SQLITE_VERSION_NUMBER >= 3005008 - if (n > 0) - { - void* buffer = random.GetWriteBuf(n); - sqlite3_randomness(n, buffer); - random.UngetWriteBuf(n); - ok = true; - } -#else - wxUnusedVar(n); - wxUnusedVar(random); -#endif - return ok; -} - -// ---------------------------------------------------------------------------- -// wxSQLite3FunctionContext: class providing the function context -// for user defined functions -// ---------------------------------------------------------------------------- - -int wxSQLite3FunctionContext::GetArgCount() -{ - return m_argc; -} - -int wxSQLite3FunctionContext::GetArgType(int argIndex) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - return sqlite3_value_type((sqlite3_value*) m_argv[argIndex]); - } - else - { - return SQLITE_NULL; - } -} - -bool wxSQLite3FunctionContext::IsNull(int argIndex) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - return sqlite3_value_type((sqlite3_value*) m_argv[argIndex]) == SQLITE_NULL; - } - else - { - return true; - } -} - -int wxSQLite3FunctionContext::GetInt(int argIndex, int nullValue) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - if (!IsNull(argIndex)) - { - return sqlite3_value_int((sqlite3_value*) m_argv[argIndex]); - } - else - { - return nullValue; - } - } - else - { - return nullValue; - } -} - -wxLongLong wxSQLite3FunctionContext::GetInt64(int argIndex, wxLongLong nullValue) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - if (!IsNull(argIndex)) - { - return wxLongLong(sqlite3_value_int64((sqlite3_value*) m_argv[argIndex])); - } - else - { - return nullValue; - } - } - else - { - return nullValue; - } -} - -double wxSQLite3FunctionContext::GetDouble(int argIndex, double nullValue) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - if (!IsNull(argIndex)) - { - return sqlite3_value_double((sqlite3_value*) m_argv[argIndex]); - } - else - { - return nullValue; - } - } - else - { - return nullValue; - } -} - -wxString wxSQLite3FunctionContext::GetString(int argIndex, const wxString& nullValue) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - if (!IsNull(argIndex)) - { - const char* localValue = (const char*) sqlite3_value_text((sqlite3_value*) m_argv[argIndex]); - return wxString::FromUTF8(localValue); - } - else - { - return nullValue; - } - } - else - { - return nullValue; - } -} - -wxMemoryBuffer& wxSQLite3FunctionContext::GetBlob(int argIndex, wxMemoryBuffer& buffer) -{ - if (argIndex >= 0 && argIndex < m_argc) - { - if (!IsNull(argIndex)) - { - int len = sqlite3_value_bytes((sqlite3_value*) m_argv[argIndex]); - const void* blob = sqlite3_value_blob((sqlite3_value*) m_argv[argIndex]); - buffer.AppendData((void*) blob, (size_t) len); - } - } - return buffer; -} - -void wxSQLite3FunctionContext::SetResult(int value) -{ - sqlite3_result_int((sqlite3_context*) m_ctx, value); -} - -void wxSQLite3FunctionContext::SetResult(wxLongLong value) -{ - sqlite3_result_int64((sqlite3_context*) m_ctx, value.GetValue()); -} - -void wxSQLite3FunctionContext::SetResult(double value) -{ - sqlite3_result_double((sqlite3_context*) m_ctx, value); -} - -void wxSQLite3FunctionContext::SetResult(const wxString& value) -{ - wxCharBuffer strValue = value.ToUTF8(); - const char* localValue = strValue; - sqlite3_result_text((sqlite3_context*) m_ctx, localValue, -1, SQLITE_TRANSIENT); -} - -void wxSQLite3FunctionContext::SetResult(unsigned char* value, int len) -{ - sqlite3_result_blob((sqlite3_context*) m_ctx, value, len, SQLITE_TRANSIENT); -} - -void wxSQLite3FunctionContext::SetResult(const wxMemoryBuffer& buffer) -{ - sqlite3_result_blob((sqlite3_context*) m_ctx, buffer.GetData(), (int) buffer.GetDataLen(), SQLITE_TRANSIENT); -} - -void wxSQLite3FunctionContext::SetResultNull() -{ - sqlite3_result_null((sqlite3_context*) m_ctx); -} - -void wxSQLite3FunctionContext::SetResultZeroBlob(int blobSize) -{ -#if SQLITE_VERSION_NUMBER >= 3004000 - sqlite3_result_zeroblob((sqlite3_context*) m_ctx, blobSize); -#endif -} - -void wxSQLite3FunctionContext::SetResultArg(int argIndex) -{ - if (argIndex >= 0 && argIndex < m_argc) { - sqlite3_result_value((sqlite3_context*) m_ctx, (sqlite3_value*) m_argv[argIndex]); - } else { - sqlite3_result_null((sqlite3_context*) m_ctx); - } -} - -void wxSQLite3FunctionContext::SetResultError(const wxString& errmsg) -{ - wxCharBuffer strErrmsg = errmsg.ToUTF8(); - const char* localErrmsg = strErrmsg; - sqlite3_result_error((sqlite3_context*) m_ctx, localErrmsg, -1); -} - -int wxSQLite3FunctionContext::GetAggregateCount() -{ - if (m_isAggregate) - { - return m_count; - } - else - { - return 0; - } -} - -void* wxSQLite3FunctionContext::GetAggregateStruct(int len) -{ - if (m_isAggregate) - { - return sqlite3_aggregate_context((sqlite3_context*) m_ctx, len); - } - else - { - return NULL; - } -} - -/* static */ -void wxSQLite3FunctionContext::ExecScalarFunction(void* ctx, int argc, void** argv) -{ - wxSQLite3FunctionContext context(ctx, false, argc, argv); - wxSQLite3ScalarFunction* func = (wxSQLite3ScalarFunction*) sqlite3_user_data((sqlite3_context*) ctx); - func->Execute(context); -} - -/* static */ -void wxSQLite3FunctionContext::ExecAggregateStep(void* ctx, int argc, void** argv) -{ - wxSQLite3FunctionContext context(ctx, true, argc, argv); - wxSQLite3AggregateFunction* func = (wxSQLite3AggregateFunction*) sqlite3_user_data((sqlite3_context*) ctx); - func->m_count++; - context.m_count = func->m_count; - func->Aggregate(context); -} - -/* static */ -void wxSQLite3FunctionContext::ExecAggregateFinalize(void* ctx) -{ - wxSQLite3FunctionContext context(ctx, true, 0, NULL); - wxSQLite3AggregateFunction* func = (wxSQLite3AggregateFunction*) sqlite3_user_data((sqlite3_context*) ctx); - context.m_count = func->m_count; - func->Finalize(context); -} - -/* static */ -int wxSQLite3FunctionContext::ExecAuthorizer(void* func, int type, - const char* arg1, const char* arg2, - const char* arg3, const char* arg4) -{ - wxString locArg1 = wxString::FromUTF8(arg1); - wxString locArg2 = wxString::FromUTF8(arg2); - wxString locArg3 = wxString::FromUTF8(arg3); - wxString locArg4 = wxString::FromUTF8(arg4); - wxSQLite3Authorizer::wxAuthorizationCode localType = (wxSQLite3Authorizer::wxAuthorizationCode) type; - return (int) ((wxSQLite3Authorizer*) func)->Authorize(localType, locArg1, locArg2, locArg3, locArg3); -} - -/* static */ -int wxSQLite3FunctionContext::ExecCommitHook(void* hook) -{ - return (int) ((wxSQLite3Hook*) hook)->CommitCallback(); -} - -/* static */ -void wxSQLite3FunctionContext::ExecRollbackHook(void* hook) -{ - ((wxSQLite3Hook*) hook)->RollbackCallback(); -} - -/* static */ -void wxSQLite3FunctionContext::ExecUpdateHook(void* hook, int type, - const char* database, const char* table, - wxsqlite_int64 rowid) -{ - wxString locDatabase = wxString::FromUTF8(database); - wxString locTable = wxString::FromUTF8(table); - wxSQLite3Hook::wxUpdateType locType = (wxSQLite3Hook::wxUpdateType) type; - wxLongLong locRowid = rowid; - ((wxSQLite3Hook*) hook)->UpdateCallback(locType, locDatabase, locTable, locRowid); -} - -wxSQLite3FunctionContext::wxSQLite3FunctionContext(void* ctx, bool isAggregate, int argc, void** argv) -: m_ctx(ctx), m_isAggregate(isAggregate), m_count(0), m_argc(argc), m_argv(argv) -{ -} - -/* static */ -int wxSQLite3FunctionContext::ExecWriteAheadLogHook(void* hook, void* dbHandle, - const char* database, int numPages) -{ - wxString locDatabase = wxString::FromUTF8(database); - wxUnusedVar(dbHandle); - return (int) ((wxSQLite3Hook*) hook)->WriteAheadLogCallback(locDatabase, numPages); -} - -static const wxChar* authCodeString[] = -{ wxT("SQLITE_COPY"), wxT("SQLITE_CREATE_INDEX"), wxT("SQLITE_CREATE_TABLE"), - wxT("SQLITE_CREATE_TEMP_INDEX"), wxT("SQLITE_CREATE_TEMP_TABLE"), wxT("SQLITE_CREATE_TEMP_TRIGGER"), - wxT("SQLITE_CREATE_TEMP_VIEW"), wxT("SQLITE_CREATE_TRIGGER"), wxT("SQLITE_CREATE_VIEW"), - wxT("SQLITE_DELETE"), wxT("SQLITE_DROP_INDEX"), wxT("SQLITE_DROP_TABLE"), - wxT("SQLITE_DROP_TEMP_INDEX"), wxT("SQLITE_DROP_TEMP_TABLE"), wxT("SQLITE_DROP_TEMP_TRIGGER"), - wxT("SQLITE_DROP_TEMP_VIEW"), wxT("SQLITE_DROP_TRIGGER"), wxT("SQLITE_DROP_VIEW"), - wxT("SQLITE_INSERT"), wxT("SQLITE_PRAGMA"), wxT("SQLITE_READ"), - wxT("SQLITE_SELECT"), wxT("SQLITE_TRANSACTION"), wxT("SQLITE_UPDATE"), - wxT("SQLITE_ATTACH"), wxT("SQLITE_DETACH"), wxT("SQLITE_ALTER_TABLE"), - wxT("SQLITE_REINDEX"), wxT("SQLITE_ANALYZE"), wxT("SQLITE_CREATE_VTABLE"), - wxT("SQLITE_DROP_VTABLE"), wxT("SQLITE_FUNCTION"), wxT("SQLITE_SAVEPOINT") -}; - - -/* static */ -wxString wxSQLite3Authorizer::AuthorizationCodeToString(wxSQLite3Authorizer::wxAuthorizationCode type) -{ - const wxChar* authString = wxT("Unknown"); - if (type >= SQLITE_COPY && type <= SQLITE_MAX_CODE) - { - authString = authCodeString[type]; - } - return wxString(authString); -} - -// ---------------------------------------------------------------------------- -// wxSQLite3Transaction -// ---------------------------------------------------------------------------- - -wxSQLite3Transaction::wxSQLite3Transaction(wxSQLite3Database* db, wxSQLite3TransactionType transactionType) -{ - assert(db != NULL); - m_database = db; - try - { - m_database->Begin(transactionType); - } - catch (...) - { - m_database = NULL; // Flag that transaction is not active - } -} - -wxSQLite3Transaction::~wxSQLite3Transaction() -{ - if (m_database != NULL) - { - m_database->Rollback(); - } -} - -void wxSQLite3Transaction::Commit() -{ - try - { - m_database->Commit(); - } - catch (...) - { - m_database->Rollback(); - } - m_database = NULL; -} - -void wxSQLite3Transaction::Rollback() -{ - try - { - m_database->Rollback(); - } - catch (...) - { - m_database->Rollback(); - } - m_database = NULL; -} - -// --- User defined function classes - -#if wxUSE_REGEX - -wxSQLite3RegExpOperator::wxSQLite3RegExpOperator(int flags) : m_flags(flags) -{ -} - -wxSQLite3RegExpOperator::~wxSQLite3RegExpOperator() -{ -} - -void wxSQLite3RegExpOperator::Execute(wxSQLite3FunctionContext& ctx) -{ - int argCount = ctx.GetArgCount(); - if (argCount == 2) - { - wxString exprStr = ctx.GetString(0); - wxString textStr = ctx.GetString(1); - if (!m_exprStr.IsSameAs(exprStr)) - { - m_exprStr = exprStr; - m_regEx.Compile(m_exprStr, m_flags); - } - if (m_regEx.IsValid()) - { - int rc = (m_regEx.Matches(textStr)) ? 1 : 0; - ctx.SetResult(rc); - } - else - { - ctx.SetResultError(wxString(_("Regular expression invalid: '"))+exprStr+_T("'.")); - } - } - else - { - ctx.SetResultError(wxString::Format(_("REGEXP called with wrong number of arguments: %d instead of 2."), argCount)); - } -} - -#endif - -// --- Support for named collections - -#if WXSQLITE3_USE_NAMED_COLLECTIONS - -// The following code is based on the SQLite test_intarray source code. - -#include <string.h> -#include <assert.h> - -/// Definition of the sqlite3_intarray object (internal) -struct sqlite3_intarray -{ - int n; // Number of elements in the array - sqlite3_int64* a; // Contents of the array - void (*xFree)(void*); // Function used to free a[] -}; - -// Objects used internally by the virtual table implementation -typedef struct intarray_vtab intarray_vtab; -typedef struct intarray_cursor intarray_cursor; - -/// Definition of intarray table object (internal) -struct intarray_vtab -{ - sqlite3_vtab base; // Base class - sqlite3_intarray* pContent; // Content of the integer array -}; - -/// Definition of intarray cursor object (internal) -struct intarray_cursor -{ - sqlite3_vtab_cursor base; // Base class - int i; // Current cursor position -}; - -// Free an sqlite3_intarray object. -static void intarrayFree(sqlite3_intarray* p) -{ - if (p->a != NULL && p->xFree) - { - p->xFree(p->a); - } - sqlite3_free(p); -} - -// Table destructor for the intarray module. -static int intarrayDestroy(sqlite3_vtab* p) -{ - intarray_vtab* pVtab = (intarray_vtab*)p; - sqlite3_free(pVtab); - return 0; -} - -// Table constructor for the intarray module. -static int intarrayCreate(sqlite3* db, // Database where module is created - void* pAux, // clientdata for the module - int /*argc*/, // Number of arguments - const char* const* /*argv*/, // Value for all arguments - sqlite3_vtab** ppVtab, // Write the new virtual table object here - char** /*pzErr*/) // Put error message text here -{ - int rc = SQLITE_NOMEM; - intarray_vtab* pVtab = (intarray_vtab*) sqlite3_malloc(sizeof(intarray_vtab)); - - if (pVtab) - { - memset(pVtab, 0, sizeof(intarray_vtab)); - pVtab->pContent = (sqlite3_intarray*)pAux; - rc = sqlite3_declare_vtab(db, "CREATE TABLE x(value INTEGER PRIMARY KEY)"); - } - *ppVtab = (sqlite3_vtab*)pVtab; - return rc; -} - -// Open a new cursor on the intarray table. -static int intarrayOpen(sqlite3_vtab* /*pVTab*/, sqlite3_vtab_cursor** ppCursor) -{ - int rc = SQLITE_NOMEM; - intarray_cursor* pCur = (intarray_cursor*) sqlite3_malloc(sizeof(intarray_cursor)); - if (pCur) - { - memset(pCur, 0, sizeof(intarray_cursor)); - *ppCursor = (sqlite3_vtab_cursor *)pCur; - rc = SQLITE_OK; - } - return rc; -} - -// Close a intarray table cursor. -static int intarrayClose(sqlite3_vtab_cursor* cur) -{ - intarray_cursor* pCur = (intarray_cursor*)cur; - sqlite3_free(pCur); - return SQLITE_OK; -} - -// Retrieve a column of data. -static int intarrayColumn(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int /*i*/) -{ - intarray_cursor* pCur = (intarray_cursor*)cur; - intarray_vtab* pVtab = (intarray_vtab*)cur->pVtab; - if (pCur->i >= 0 && pCur->i < pVtab->pContent->n) - { - sqlite3_result_int64(ctx, pVtab->pContent->a[pCur->i]); - } - return SQLITE_OK; -} - -// Retrieve the current rowid. -static int intarrayRowid(sqlite3_vtab_cursor* cur, sqlite_int64* pRowid) -{ - intarray_cursor* pCur = (intarray_cursor*)cur; - *pRowid = pCur->i; - return SQLITE_OK; -} - -static int intarrayEof(sqlite3_vtab_cursor* cur) -{ - intarray_cursor* pCur = (intarray_cursor*)cur; - intarray_vtab* pVtab = (intarray_vtab*)cur->pVtab; - return pCur->i >= pVtab->pContent->n; -} - -// Advance the cursor to the next row. -static int intarrayNext(sqlite3_vtab_cursor* cur) -{ - intarray_cursor* pCur = (intarray_cursor*)cur; - pCur->i++; - return SQLITE_OK; -} - -// Reset a intarray table cursor. -static int intarrayFilter(sqlite3_vtab_cursor* pVtabCursor, - int /*idxNum*/, const char* /*idxStr*/, - int /*argc*/, sqlite3_value** /*argv*/) -{ - intarray_cursor *pCur = (intarray_cursor *)pVtabCursor; - pCur->i = 0; - return SQLITE_OK; -} - -// Analyse the WHERE condition. -static int intarrayBestIndex(sqlite3_vtab* /*tab*/, sqlite3_index_info* /*pIdxInfo*/) -{ - return SQLITE_OK; -} - -// Definition of a virtual table module for integer collections -static sqlite3_module intarrayModule = -{ - 0, // iVersion - intarrayCreate, // xCreate - create a new virtual table - intarrayCreate, // xConnect - connect to an existing vtab - intarrayBestIndex, // xBestIndex - find the best query index - intarrayDestroy, // xDisconnect - disconnect a vtab - intarrayDestroy, // xDestroy - destroy a vtab - intarrayOpen, // xOpen - open a cursor - intarrayClose, // xClose - close a cursor - intarrayFilter, // xFilter - configure scan constraints - intarrayNext, // xNext - advance a cursor - intarrayEof, // xEof - intarrayColumn, // xColumn - read data - intarrayRowid, // xRowid - read data - 0, // xUpdate - 0, // xBegin - 0, // xSync - 0, // xCommit - 0, // xRollback - 0, // xFindMethod - 0, // xRename -}; - -/// Definition of the sqlite3_chararray object (internal) -struct sqlite3_chararray -{ - int n; // Number of elements in the array - char** a; // Contents of the array - void (*xFree)(void*); // Function used to free a[] -}; - -// Objects used internally by the virtual table implementation -typedef struct chararray_vtab chararray_vtab; -typedef struct chararray_cursor chararray_cursor; - -/// Definition of chararray table object (internal) -struct chararray_vtab -{ - sqlite3_vtab base; // Base class - sqlite3_chararray* pContent; // Content of the char array -}; - -/// Definition of chararray cursor object (internal) -struct chararray_cursor -{ - sqlite3_vtab_cursor base; // Base class - int i; // Current cursor position -}; - -// Free an sqlite3_chararray object. -static void chararrayFree(sqlite3_chararray* p) -{ - if (p->a != NULL && p->xFree) - { - int j; - for (j = 0; j < p->n; ++j) - { - p->xFree(p->a[j]); - } - p->xFree(p->a); - } - sqlite3_free(p); -} - -// Table destructor for the chararray module. -static int chararrayDestroy(sqlite3_vtab* p) -{ - chararray_vtab* pVtab = (chararray_vtab*)p; - sqlite3_free(pVtab); - return 0; -} - -// Table constructor for the chararray module. -static int chararrayCreate(sqlite3* db, // Database where module is created - void* pAux, // clientdata for the module - int /*argc*/, // Number of arguments - const char* const* /*argv*/, // Value for all arguments - sqlite3_vtab** ppVtab, // Write the new virtual table object here - char** /*pzErr*/) // Put error message text here -{ - int rc = SQLITE_NOMEM; - chararray_vtab* pVtab = (chararray_vtab*) sqlite3_malloc(sizeof(chararray_vtab)); - - if (pVtab) - { - memset(pVtab, 0, sizeof(chararray_vtab)); - pVtab->pContent = (sqlite3_chararray*)pAux; - rc = sqlite3_declare_vtab(db, "CREATE TABLE x(value CHAR PRIMARY KEY)"); - } - *ppVtab = (sqlite3_vtab*)pVtab; - return rc; -} - -// Open a new cursor on the chararray table. -static int chararrayOpen(sqlite3_vtab* /*pVTab*/, sqlite3_vtab_cursor** ppCursor) -{ - int rc = SQLITE_NOMEM; - chararray_cursor* pCur = (chararray_cursor*) sqlite3_malloc(sizeof(chararray_cursor)); - if (pCur) - { - memset(pCur, 0, sizeof(chararray_cursor)); - *ppCursor = (sqlite3_vtab_cursor *)pCur; - rc = SQLITE_OK; - } - return rc; -} - -// Close a chararray table cursor. -static int chararrayClose(sqlite3_vtab_cursor* cur) -{ - chararray_cursor* pCur = (chararray_cursor*)cur; - sqlite3_free(pCur); - return SQLITE_OK; -} - -// Retrieve a column of data. -static int chararrayColumn(sqlite3_vtab_cursor* cur, sqlite3_context* ctx, int /*i*/) -{ - chararray_cursor* pCur = (chararray_cursor*)cur; - chararray_vtab* pVtab = (chararray_vtab*)cur->pVtab; - if (pCur->i >= 0 && pCur->i < pVtab->pContent->n) - { - sqlite3_result_text(ctx, pVtab->pContent->a[pCur->i], -1, SQLITE_STATIC); - } - return SQLITE_OK; -} - -// Retrieve the current rowid. -static int chararrayRowid(sqlite3_vtab_cursor* cur, sqlite_int64* pRowid) -{ - chararray_cursor* pCur = (chararray_cursor*)cur; - *pRowid = pCur->i; - return SQLITE_OK; -} - -static int chararrayEof(sqlite3_vtab_cursor* cur) -{ - chararray_cursor* pCur = (chararray_cursor*)cur; - chararray_vtab* pVtab = (chararray_vtab*)cur->pVtab; - return pCur->i >= pVtab->pContent->n; -} - -// Advance the cursor to the next row. -static int chararrayNext(sqlite3_vtab_cursor* cur) -{ - chararray_cursor* pCur = (chararray_cursor*)cur; - pCur->i++; - return SQLITE_OK; -} - -// Reset a chararray table cursor. -static int chararrayFilter(sqlite3_vtab_cursor* pVtabCursor, - int /*idxNum*/, const char* /*idxStr*/, - int /*argc*/, sqlite3_value** /*argv*/) -{ - chararray_cursor *pCur = (chararray_cursor *)pVtabCursor; - pCur->i = 0; - return SQLITE_OK; -} - -// Analyse the WHERE condition. -static int chararrayBestIndex(sqlite3_vtab* /*tab*/, sqlite3_index_info* /*pIdxInfo*/) -{ - return SQLITE_OK; -} - -// Definition of a virtual table module for string collections -static sqlite3_module chararrayModule = -{ - 0, // iVersion - chararrayCreate, // xCreate - create a new virtual table - chararrayCreate, // xConnect - connect to an existing vtab - chararrayBestIndex, // xBestIndex - find the best query index - chararrayDestroy, // xDisconnect - disconnect a vtab - chararrayDestroy, // xDestroy - destroy a vtab - chararrayOpen, // xOpen - open a cursor - chararrayClose, // xClose - close a cursor - chararrayFilter, // xFilter - configure scan constraints - chararrayNext, // xNext - advance a cursor - chararrayEof, // xEof - chararrayColumn, // xColumn - read data - chararrayRowid, // xRowid - read data - 0, // xUpdate - 0, // xBegin - 0, // xSync - 0, // xCommit - 0, // xRollback - 0, // xFindMethod - 0, // xRename -}; - -#endif // WXSQLITE3_USE_NAMED_COLLECTIONS - -wxSQLite3NamedCollection::wxSQLite3NamedCollection() -{ - m_name = wxEmptyString; - m_data = NULL; -} - -wxSQLite3NamedCollection::wxSQLite3NamedCollection(const wxString& collectionName, void* collectionData) -{ - m_name = collectionName; - m_data = collectionData; -} - -wxSQLite3NamedCollection::wxSQLite3NamedCollection(const wxSQLite3NamedCollection& collection) - : m_name(collection.m_name), m_data(collection.m_data) -{ -} - -wxSQLite3NamedCollection& -wxSQLite3NamedCollection::operator=(const wxSQLite3NamedCollection& collection) -{ - if (this != &collection) - { - m_name = collection.m_name; - m_data = collection.m_data; - } - return *this; -} - -wxSQLite3NamedCollection::~wxSQLite3NamedCollection() -{ -} - -wxSQLite3IntegerCollection::wxSQLite3IntegerCollection() - : wxSQLite3NamedCollection(wxEmptyString, NULL) -{ -} - -wxSQLite3IntegerCollection::wxSQLite3IntegerCollection(const wxSQLite3IntegerCollection& collection) - : wxSQLite3NamedCollection(collection) -{ -} - -wxSQLite3IntegerCollection& -wxSQLite3IntegerCollection::operator=(const wxSQLite3IntegerCollection& collection) -{ - if (this != &collection) - { - wxSQLite3NamedCollection::operator=(collection); - } - return *this; -} - -wxSQLite3IntegerCollection::wxSQLite3IntegerCollection(const wxString& collectionName, void* collectionData) - : wxSQLite3NamedCollection(collectionName, collectionData) -{ -} - -wxSQLite3IntegerCollection::~wxSQLite3IntegerCollection() -{ -} - -void -wxSQLite3IntegerCollection::Bind(const wxArrayInt& integerCollection) -{ - size_t n = integerCollection.Count(); - sqlite3_intarray* pIntArray = (sqlite3_intarray*) m_data; - if (m_data != NULL) - { - if (pIntArray->a != NULL && pIntArray->xFree) - { - pIntArray->xFree(pIntArray->a); - } - } - pIntArray->n = n; - if (n > 0) - { - pIntArray->a = (sqlite3_int64*) sqlite3_malloc(sizeof(sqlite3_int64)*n); - pIntArray->xFree = sqlite3_free; - } - else - { - pIntArray->a = NULL; - pIntArray->xFree = NULL; - } - - size_t j; - for (j = 0; j < n; ++j) - { - pIntArray->a[j] = integerCollection[j]; - } -} - -void -wxSQLite3IntegerCollection::Bind(int n, int* integerCollection) -{ - sqlite3_intarray* pIntArray = (sqlite3_intarray*) m_data; - if (m_data != NULL) - { - if (pIntArray->a != NULL && pIntArray->xFree) - { - pIntArray->xFree(pIntArray->a); - } - } - pIntArray->n = n; - if (n > 0) - { - pIntArray->a = (sqlite3_int64*) sqlite3_malloc(sizeof(sqlite3_int64)*n); - pIntArray->xFree = sqlite3_free; - } - else - { - pIntArray->a = NULL; - pIntArray->xFree = NULL; - } - - int j; - for (j = 0; j < n; ++j) - { - pIntArray->a[j] = integerCollection[j]; - } -} - -wxSQLite3IntegerCollection -wxSQLite3Database::CreateIntegerCollection(const wxString& collectionName) -{ -#if WXSQLITE3_USE_NAMED_COLLECTIONS - int rc = SQLITE_OK; - wxCharBuffer strCollectionName = collectionName.ToUTF8(); - const char* zName = strCollectionName; - sqlite3_intarray* p = (sqlite3_intarray*) sqlite3_malloc( sizeof(*p) ); - if (p == 0) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMEM, wxSQLite3IntegerCollection());
- } - p->n = 0; - p->a= NULL; - p->xFree = NULL; - rc = sqlite3_create_module_v2((sqlite3*)m_db, zName, &intarrayModule, p, (void(*)(void*))intarrayFree); - if (rc == SQLITE_OK) - { - wxSQLite3StatementBuffer zBuffer; - const char* zSql = zBuffer.Format("CREATE VIRTUAL TABLE temp.%Q USING %Q", zName, zName); - rc = sqlite3_exec((sqlite3*)m_db, zSql, 0, 0, 0); - } - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3IntegerCollection());
- } - return wxSQLite3IntegerCollection(collectionName, p); -#else - wxUnusedVar(collectionName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS, );
-#endif // WXSQLITE3_USE_NAMED_COLLECTIONS -} - -wxSQLite3StringCollection::wxSQLite3StringCollection() - : wxSQLite3NamedCollection(wxEmptyString, NULL) -{ -} - -wxSQLite3StringCollection::wxSQLite3StringCollection(const wxSQLite3StringCollection& collection) - : wxSQLite3NamedCollection(collection) -{ -} - -wxSQLite3StringCollection& -wxSQLite3StringCollection::operator=(const wxSQLite3StringCollection& collection) -{ - if (this != &collection) - { - wxSQLite3StringCollection::operator=(collection); - } - return *this; -} - -wxSQLite3StringCollection::wxSQLite3StringCollection(const wxString& collectionName, void* collectionData) - : wxSQLite3NamedCollection(collectionName, collectionData) -{ -} - -wxSQLite3StringCollection::~wxSQLite3StringCollection() -{ -} - -void -wxSQLite3StringCollection::Bind(const wxArrayString& stringCollection) -{ - size_t n = stringCollection.Count(); - sqlite3_chararray* pCharArray = (sqlite3_chararray*) m_data; - if (m_data != NULL) - { - if (pCharArray->a != NULL && pCharArray->xFree) - { - pCharArray->xFree(pCharArray->a); - } - } - pCharArray->n = n; - if (n > 0) - { - pCharArray->a = (char**) sqlite3_malloc(sizeof(char*)*n); - pCharArray->xFree = sqlite3_free; - } - else - { - pCharArray->a = NULL; - pCharArray->xFree = NULL; - } - - size_t j; - for (j = 0; j < n; ++j) - { - wxCharBuffer strValue = stringCollection[j].ToUTF8(); - const char* zValue = strValue; - size_t k = strlen(zValue) + 1; - pCharArray->a[j] = (char*) sqlite3_malloc(sizeof(char)*k); - strcpy(pCharArray->a[j], zValue); - } -} - -wxSQLite3StringCollection -wxSQLite3Database::CreateStringCollection(const wxString& collectionName) -{ -#if WXSQLITE3_USE_NAMED_COLLECTIONS - int rc = SQLITE_OK; - wxCharBuffer strCollectionName = collectionName.ToUTF8(); - const char* zName = strCollectionName; - sqlite3_chararray* p = (sqlite3_chararray*) sqlite3_malloc( sizeof(*p) ); - if (p == 0) - { - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMEM, wxSQLite3StringCollection());
- } - p->n = 0; - p->a= NULL; - p->xFree = NULL; - rc = sqlite3_create_module_v2((sqlite3*)m_db, zName, &chararrayModule, p, (void(*)(void*))chararrayFree); - if (rc == SQLITE_OK) - { - wxSQLite3StatementBuffer zBuffer; - const char* zSql = zBuffer.Format("CREATE VIRTUAL TABLE temp.%Q USING %Q", zName, zName); - rc = sqlite3_exec((sqlite3*)m_db, zSql, 0, 0, 0); - } - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3StringCollection());
- } - return wxSQLite3StringCollection(collectionName, p); -#else - wxUnusedVar(collectionName); - WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS, wxSQLite3StringCollection());
-#endif // WXSQLITE3_USE_NAMED_COLLECTIONS -} - diff --git a/sources/WxSQLite3/wxsqlite3.patch b/sources/WxSQLite3/wxsqlite3.patch deleted file mode 100644 index 4b303f4d..00000000 --- a/sources/WxSQLite3/wxsqlite3.patch +++ /dev/null @@ -1,966 +0,0 @@ ---- wxsqlite3.old 2011-03-07 23:34:44.000000000 +0300 -+++ wxsqlite3.cpp 2011-03-31 14:45:55.000000000 +0400 -@@ -30,6 +30,24 @@ - #include "wx/wxsqlite3.h" - #include "wx/wxsqlite3opt.h" - -+// Error handling in wxSQLite3 library -+
-+#if WXSQLITE_USE_EXCEPTIONS -+ #define WXSQLITE3_ERROR(code, message, result) throw wxSQLite3Exception(code, message); -+#else -+ void wxSQLite3_Error(int errorCode, const wxString& errorMsg)
-+ {
-+ if (errorCode == 9) return; -+ wxString m_errorMessage =
-+ wxSQLite3Exception::ErrorCodeAsString(errorCode) + wxT("[") +
-+ wxString::Format(wxT("%d"), errorCode) + wxT("]: ") +
-+ wxGetTranslation(errorMsg);
-+
-+ wxLogError(m_errorMessage);
-+ }
-+ #define WXSQLITE3_ERROR(code, message, result) wxSQLite3_Error(code, message); return result;
-+#endif // WXSQLITE_USE_EXCEPTIONS
-+ - // Suppress some Visual C++ warnings regarding the default constructor - // for a C struct used only in SQLite modules - #ifdef __VISUALC__ -@@ -72,7 +89,7 @@ - if (! s_dll.Load(wxT("libsqlite3"))) - #endif - { -- throw wxSQLite3Exception(-1, wxT("error loading dynamic library")); -+ WXSQLITE3_ERROR(-1, wxT("error loading dynamic library"), );
- } - - #define DYNFUNC(rcode, rtype, fname, farg, farguse) \ -@@ -80,7 +97,7 @@ - if (! s_##fname)\ - {\ - s_dll.Unload();\ -- throw wxSQLite3Exception(-1, wxT("error getting symbol <") wxT(#fname) wxT(">"));\ -+ WXSQLITE3_ERROR(-1, wxT("error getting symbol <") wxT(#fname) wxT(">"), );\
- } - #include "wx/wxsqlite3dyn.h" - #undef DYNFUNC -@@ -439,7 +456,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = (const char*) sqlite3_column_text((sqlite3_stmt*) m_stmt, columnIndex); -@@ -533,7 +550,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, NULL);
- } - - len = sqlite3_column_bytes((sqlite3_stmt*) m_stmt, columnIndex); -@@ -552,7 +569,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, buffer);
- } - - int len = sqlite3_column_bytes((sqlite3_stmt*) m_stmt, columnIndex); -@@ -757,7 +774,7 @@ - } - } - -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, -1);
- } - - wxString wxSQLite3ResultSet::GetColumnName(int columnIndex) -@@ -766,7 +783,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_name((sqlite3_stmt*) m_stmt, columnIndex); -@@ -779,7 +796,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_decltype((sqlite3_stmt*) m_stmt, columnIndex); -@@ -792,7 +809,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, -1);
- } - - return sqlite3_column_type((sqlite3_stmt*) m_stmt, columnIndex); -@@ -833,7 +850,7 @@ - rc = sqlite3_finalize((sqlite3_stmt*) m_stmt); - m_stmt = 0; - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), false);
- } - } - -@@ -846,7 +863,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - } -@@ -871,7 +888,7 @@ - { - if (m_stmt == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOSTMT); -+ return;
- } - } - -@@ -881,7 +898,7 @@ - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_database_name((sqlite3_stmt*) m_stmt, columnIndex); -@@ -891,7 +908,7 @@ - return wxEmptyString; - #else - wxUnusedVar(columnIndex); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMETADATA); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
- #endif - } - -@@ -901,7 +918,7 @@ - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_table_name((sqlite3_stmt*) m_stmt, columnIndex); -@@ -911,7 +928,7 @@ - return wxEmptyString; - #else - wxUnusedVar(columnIndex); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMETADATA); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
- #endif - } - -@@ -921,7 +938,7 @@ - CheckStmt(); - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = sqlite3_column_origin_name((sqlite3_stmt*) m_stmt, columnIndex); -@@ -931,7 +948,7 @@ - return wxEmptyString; - #else - wxUnusedVar(columnIndex); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMETADATA); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, wxEmptyString);
- #endif - } - -@@ -1036,14 +1053,14 @@ - } - } - -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_NAME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_NAME, -1);
- } - - wxString wxSQLite3Table::GetAsString(int columnIndex) - { - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - int nIndex = (m_currentRow*m_cols) + m_cols + columnIndex; -@@ -1212,7 +1229,7 @@ - { - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, nullValue);
- } - int nIndex = (m_currentRow*m_cols) + m_cols + columnIndex; - return wxSQLite3AtoF(m_results[nIndex]); -@@ -1326,7 +1343,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, false);
- } - - int index = (m_currentRow*m_cols) + m_cols + columnIndex; -@@ -1346,7 +1363,7 @@ - - if (columnIndex < 0 || columnIndex > m_cols-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_INDEX, wxEmptyString);
- } - - const char* localValue = m_results[columnIndex]; -@@ -1359,7 +1376,7 @@ - - if (row < 0 || row > m_rows-1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_ROW); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_ROW, );
- } - - m_currentRow = row; -@@ -1374,7 +1391,7 @@ - { - if (m_results == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NORESULT); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NORESULT, );
- } - } - -@@ -1454,7 +1471,7 @@ - if (rc != SQLITE_OK) - { - localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), -1);
- } - - return rowsChanged; -@@ -1463,7 +1480,7 @@ - { - rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), -1);
- } - } - -@@ -1479,7 +1496,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOTOWNED); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOTOWNED, wxSQLite3ResultSet());
- } - } - -@@ -1497,7 +1514,7 @@ - { - rc = sqlite3_reset((sqlite3_stmt*) m_stmt); - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3ResultSet());
- } - } - -@@ -1535,7 +1552,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_STR); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_STR, );
- } - } - -@@ -1546,7 +1563,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_INT); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_INT, );
- } - } - -@@ -1557,7 +1574,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_INT64); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_INT64, );
- } - } - -@@ -1568,7 +1585,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_DBL); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_DBL, );
- } - } - -@@ -1579,7 +1596,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_STR); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_STR, );
- } - } - -@@ -1591,7 +1608,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_BLOB); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_BLOB, );
- } - } - -@@ -1604,7 +1621,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_BLOB); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_BLOB, );
- } - } - -@@ -1616,7 +1633,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1628,7 +1645,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1640,7 +1657,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1652,7 +1669,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1664,7 +1681,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1676,7 +1693,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_BIND_DATETIME, );
- } - } - -@@ -1692,7 +1709,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_NULL); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_NULL, );
- } - } - -@@ -1703,12 +1720,12 @@ - int rc = sqlite3_bind_zeroblob((sqlite3_stmt*) m_stmt, paramIndex, blobSize); - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_ZEROBLOB); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_ZEROBLOB, );
- } - #else - wxUnusedVar(paramIndex); - wxUnusedVar(blobSize); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
- #endif - } - -@@ -1720,7 +1737,7 @@ - - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_BIND_CLEAR); -+ WXSQLITE3_ERROR(rc, wxERRMSG_BIND_CLEAR, );
- } - #else - for (int paramIndex = 1; paramIndex <= GetParamCount(); paramIndex++) -@@ -1750,7 +1767,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - } -@@ -1776,7 +1793,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - } -@@ -1790,7 +1807,7 @@ - { - if (m_db == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NODB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NODB, );
- } - } - -@@ -1798,7 +1815,7 @@ - { - if (m_stmt == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOSTMT); -+ return;
- } - } - -@@ -1870,7 +1887,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), blobValue);
- } - - blobValue.UngetAppendBuf((size_t) length); -@@ -1878,7 +1895,7 @@ - wxUnusedVar(blobValue); - wxUnusedVar(length); - wxUnusedVar(offset); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, blobValue);
- #endif - return blobValue; - } -@@ -1896,17 +1913,17 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB, );
- } - #else - wxUnusedVar(blobValue); - wxUnusedVar(offset); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
- #endif - } - -@@ -1926,7 +1943,7 @@ - CheckBlob(); - return sqlite3_blob_bytes((sqlite3_blob*) m_blob); - #else -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, 0);
- return 0; - #endif - } -@@ -1939,11 +1956,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(rowid); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOBLOBREBIND); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBLOBREBIND, );
- #endif - } - -@@ -1958,11 +1975,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - #else -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, );
- #endif - } - -@@ -1970,7 +1987,7 @@ - { - if (!m_ok) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_BLOB, );
- } - } - -@@ -1987,7 +2004,7 @@ - int rc = sqlite3_enable_shared_cache(flag); - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_SHARED_CACHE); -+ WXSQLITE3_ERROR(rc, wxERRMSG_SHARED_CACHE, );
- } - ms_sharedCacheEnabled = enable; - } -@@ -2119,7 +2136,7 @@ - } - else - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_DBASSIGN_FAILED); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_DBASSIGN_FAILED, *this);
- } - } - return *this; -@@ -2148,7 +2165,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - rc = sqlite3_extended_result_codes((sqlite3*) m_db, 1); -@@ -2156,7 +2173,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - #if WXSQLITE3_HAVE_CODEC -@@ -2167,7 +2184,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - Close(); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - m_isEncrypted = true; - } -@@ -2234,7 +2251,7 @@ - if (rc != SQLITE_OK) - { - sqlite3_close(pDest); -- throw wxSQLite3Exception(rc, wxERRMSG_DBOPEN_FAILED); -+ WXSQLITE3_ERROR(rc, wxERRMSG_DBOPEN_FAILED, );
- } - #if WXSQLITE3_HAVE_CODEC - if (key.GetDataLen() > 0) -@@ -2244,7 +2261,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) pDest); - sqlite3_close(pDest); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - #else -@@ -2256,7 +2273,7 @@ - { - const char* localError = sqlite3_errmsg(pDest); - sqlite3_close(pDest); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - do -@@ -2282,12 +2299,12 @@ - { - const char* localError = sqlite3_errmsg(pDest); - sqlite3_close(pDest); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(targetFileName); - wxUnusedVar(sourceDatabaseName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOBACKUP); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBACKUP, );
- #endif - } - -@@ -2322,7 +2339,7 @@ - if (rc != SQLITE_OK) - { - sqlite3_close(pSrc); -- throw wxSQLite3Exception(rc, wxERRMSG_DBOPEN_FAILED); -+ WXSQLITE3_ERROR(rc, wxERRMSG_DBOPEN_FAILED, );
- } - #if WXSQLITE3_HAVE_CODEC - if (key.GetDataLen() > 0) -@@ -2332,7 +2349,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) pSrc); - sqlite3_close(pSrc); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - #else -@@ -2344,7 +2361,7 @@ - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); - sqlite3_close(pSrc); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - while ((rc = sqlite3_backup_step(pBackup, 100)) == SQLITE_OK || rc == SQLITE_BUSY) - { -@@ -2362,18 +2379,18 @@ - else if (rc == SQLITE_BUSY || rc == SQLITE_LOCKED) - { - sqlite3_close(pSrc); -- throw wxSQLite3Exception(rc, wxERRMSG_SOURCEDB_BUSY); -+ WXSQLITE3_ERROR(rc, wxERRMSG_SOURCEDB_BUSY, );
- } - else - { - const char* localError = sqlite3_errmsg(pSrc); - sqlite3_close(pSrc); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(sourceFileName); - wxUnusedVar(targetDatabaseName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOBACKUP); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOBACKUP, );
- #endif - } - -@@ -2431,7 +2448,7 @@ - ExecuteUpdate(wxString(wxT("savepoint "))+savepointName); - #else - wxUnusedVar(savepointName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT, );
- #endif - } - -@@ -2441,7 +2458,7 @@ - ExecuteUpdate(wxString(wxT("release savepoint "))+savepointName); - #else - wxUnusedVar(savepointName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOSAVEPOINT, );
- #endif - } - -@@ -2663,7 +2680,7 @@ - } - else - { -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), 0);
- } - } - -@@ -2699,7 +2716,7 @@ - { - rc = sqlite3_finalize(stmt); - const char* localError= sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3ResultSet());
- } - } - -@@ -2721,7 +2738,7 @@ - - if (resultSet.Eof() || resultSet.GetColumnCount() < 1) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_INVALID_QUERY); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_INVALID_QUERY, 0);
- } - - long value = 0; -@@ -2759,7 +2776,7 @@ - } - else - { -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3Table());
- } - } - -@@ -2805,7 +2822,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3Blob());
- } - return wxSQLite3Blob(m_db, (void*) blobHandle, writable); - #else -@@ -2814,7 +2831,7 @@ - wxUnusedVar(tableName); - wxUnusedVar(dbName); - wxUnusedVar(writable); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOINCBLOB, wxSQLite3Blob());
- return NULL; - #endif - } -@@ -2957,7 +2974,7 @@ - } - #else - wxUnusedVar(walHook); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOWAL); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
- #endif - } - -@@ -2972,11 +2989,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(database); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOWAL); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
- #endif - } - -@@ -2989,11 +3006,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(frameCount); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOWAL); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOWAL, );
- #endif - } - -@@ -3020,7 +3037,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - } - -@@ -3028,7 +3045,7 @@ - { - if (!m_db) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NODB); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NODB, );
- } - } - -@@ -3044,7 +3061,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), NULL);
- } - - return stmt; -@@ -3088,7 +3105,7 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - - if (dataType != NULL) *dataType = wxString::FromUTF8(localDataType); -@@ -3106,7 +3123,7 @@ - wxUnusedVar(notNull); - wxUnusedVar(primaryKey); - wxUnusedVar(autoIncrement); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMETADATA); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMETADATA, );
- #endif - } - -@@ -3122,12 +3139,12 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(fileName); - wxUnusedVar(entryPoint); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT, );
- #endif - } - -@@ -3139,11 +3156,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(enable); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOLOADEXT, );
- #endif - } - -@@ -3160,7 +3177,7 @@ - ReKey(binaryNewKey); - #else - wxUnusedVar(newKey); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOCODEC); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCODEC, );
- #endif - } - -@@ -3171,11 +3188,11 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), );
- } - #else - wxUnusedVar(newKey); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOCODEC); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCODEC, );
- #endif - } - -@@ -3238,7 +3255,7 @@ - int rc = sqlite3_initialize(); - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_INITIALIZE); -+ WXSQLITE3_ERROR(rc, wxERRMSG_INITIALIZE, );
- } - #endif - } -@@ -3250,7 +3267,7 @@ - int rc = sqlite3_shutdown(); - if (rc != SQLITE_OK) - { -- throw wxSQLite3Exception(rc, wxERRMSG_SHUTDOWN); -+ WXSQLITE3_ERROR(rc, wxERRMSG_SHUTDOWN, );
- } - #endif - } -@@ -4155,7 +4172,7 @@ - sqlite3_intarray* p = (sqlite3_intarray*) sqlite3_malloc( sizeof(*p) ); - if (p == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMEM); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMEM, wxSQLite3IntegerCollection());
- } - p->n = 0; - p->a= NULL; -@@ -4170,12 +4187,12 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3IntegerCollection());
- } - return wxSQLite3IntegerCollection(collectionName, p); - #else - wxUnusedVar(collectionName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS, );
- #endif // WXSQLITE3_USE_NAMED_COLLECTIONS - } - -@@ -4253,7 +4270,7 @@ - sqlite3_chararray* p = (sqlite3_chararray*) sqlite3_malloc( sizeof(*p) ); - if (p == 0) - { -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOMEM); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOMEM, wxSQLite3StringCollection());
- } - p->n = 0; - p->a= NULL; -@@ -4268,12 +4285,12 @@ - if (rc != SQLITE_OK) - { - const char* localError = sqlite3_errmsg((sqlite3*) m_db); -- throw wxSQLite3Exception(rc, wxString::FromUTF8(localError)); -+ WXSQLITE3_ERROR(rc, wxString::FromUTF8(localError), wxSQLite3StringCollection());
- } - return wxSQLite3StringCollection(collectionName, p); - #else - wxUnusedVar(collectionName); -- throw wxSQLite3Exception(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS); -+ WXSQLITE3_ERROR(WXSQLITE_ERROR, wxERRMSG_NOCOLLECTIONS, wxSQLite3StringCollection());
- #endif // WXSQLITE3_USE_NAMED_COLLECTIONS - } - diff --git a/sources/workspace/faxpp.cbp b/sources/workspace/faxpp.cbp index e1681c19..e2c0d7f2 100644 --- a/sources/workspace/faxpp.cbp +++ b/sources/workspace/faxpp.cbp @@ -7,7 +7,7 @@ <Option compiler="gcc" /> <Build> <Target title="LinDebug"> - <Option output="../../build/LinDebug/libFaxpp" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/LinDebug/Faxpp" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/LinDebug/" /> <Option type="2" /> @@ -19,7 +19,7 @@ </Compiler> </Target> <Target title="LinRelease"> - <Option output="../../build/LinRelease/libFaxpp" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/LinRelease/Faxpp" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/LinRelease/" /> <Option type="2" /> @@ -34,7 +34,7 @@ </Linker> </Target> <Target title="WinDebug"> - <Option output="../../build/WinDebug/libFaxpp" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/WinDebug/Faxpp" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/WinDebug/" /> <Option type="2" /> @@ -47,7 +47,7 @@ </Compiler> </Target> <Target title="WinRelease"> - <Option output="../../build/WinRelease/libFaxpp" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/WinRelease/Faxpp" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/WinRelease/" /> <Option type="2" /> diff --git a/sources/workspace/myrulib.cbp b/sources/workspace/myrulib.cbp index 5abffb54..105d12cd 100644 --- a/sources/workspace/myrulib.cbp +++ b/sources/workspace/myrulib.cbp @@ -401,6 +401,7 @@ <Option target="WinRelease" /> </Unit> <Unit filename="../MyRuLib/sha1/sha1.h" /> + <Unit filename="../MyRuLib/wx/FbSQLite3.h" /> <Unit filename="../MyRuLib/wx/base64.cpp" /> <Unit filename="../MyRuLib/wx/base64.h" /> <Extensions> diff --git a/sources/workspace/wxsqlite3.cbp b/sources/workspace/wxsqlite3.cbp index 07ced6bf..2e648962 100644 --- a/sources/workspace/wxsqlite3.cbp +++ b/sources/workspace/wxsqlite3.cbp @@ -8,7 +8,7 @@ <Build> <Target title="LinDebug"> <Option platforms="Unix;" /> - <Option output="../../build/LinDebug/libWxSQLite3" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/LinDebug/WxSQLite3" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/LinDebug/" /> <Option type="2" /> @@ -25,7 +25,7 @@ </Target> <Target title="LinRelease"> <Option platforms="Unix;" /> - <Option output="../../build/LinRelease/libWxSQLite3" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/LinRelease/WxSQLite3" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/LinRelease/" /> <Option type="2" /> @@ -43,7 +43,7 @@ </Target> <Target title="WinDebug"> <Option platforms="Windows;" /> - <Option output="../../build/WinDebug/libWxSQLite3" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/WinDebug/WxSQLite3" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/WinDebug/" /> <Option type="2" /> @@ -61,7 +61,7 @@ </Target> <Target title="WinRelease"> <Option platforms="Windows;" /> - <Option output="../../build/WinRelease/libWxSQLite3" prefix_auto="1" extension_auto="1" /> + <Option output="../../build/WinRelease/WxSQLite3" prefix_auto="1" extension_auto="1" /> <Option working_dir="" /> <Option object_output="../../build/WinRelease/" /> <Option type="2" /> @@ -87,7 +87,7 @@ <Unit filename="../../3rdparty/wxsqlite3/include/wx/wxsqlite3def.h" /> <Unit filename="../../3rdparty/wxsqlite3/include/wx/wxsqlite3dyn.h" /> <Unit filename="../../3rdparty/wxsqlite3/include/wx/wxsqlite3opt.h" /> - <Unit filename="../../build/wxsqlite3.cpp" /> + <Unit filename="../../3rdparty/wxsqlite3/src/wxsqlite3.cpp" /> <Extensions> <code_completion /> <debugger /> |