Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lintest/myrulib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKandrashin Denis <mail@lintest.ru>2013-08-16 00:18:50 +0400
committerKandrashin Denis <mail@lintest.ru>2013-08-16 01:43:04 +0400
commit40071db69be9a64846c6969bd98ca4c475d3f1f9 (patch)
tree262a194e1737ee6fd8cdca01e42574a0ff0ad75d
parentd1f1814d69980adbea89e498cb303e28a3172d5f (diff)
Use original wxSQLite3 library
-rw-r--r--Makefile.in4
-rw-r--r--myrulib.bkl2
-rw-r--r--sources/MyRuLib/FbAlphabet.cpp2
-rw-r--r--sources/MyRuLib/FbBookEvent.h2
-rw-r--r--sources/MyRuLib/FbBookMenu.cpp6
-rw-r--r--sources/MyRuLib/FbCacheBook.cpp8
-rw-r--r--sources/MyRuLib/FbCacheBook.h6
-rw-r--r--sources/MyRuLib/FbCollection.cpp48
-rw-r--r--sources/MyRuLib/FbCollection.h6
-rw-r--r--sources/MyRuLib/FbDatabase.cpp129
-rw-r--r--sources/MyRuLib/FbDatabase.h16
-rw-r--r--sources/MyRuLib/FbDeleteThread.cpp4
-rw-r--r--sources/MyRuLib/FbDownloader.cpp2
-rw-r--r--sources/MyRuLib/FbExtractInfo.cpp12
-rw-r--r--sources/MyRuLib/FbExtractInfo.h6
-rw-r--r--sources/MyRuLib/FbFileReader.cpp14
-rw-r--r--sources/MyRuLib/FbFilterThread.cpp4
-rw-r--r--sources/MyRuLib/FbFrameThread.cpp6
-rw-r--r--sources/MyRuLib/FbFrameThread.h8
-rw-r--r--sources/MyRuLib/FbGenreThread.cpp8
-rw-r--r--sources/MyRuLib/FbGenres.cpp2
-rw-r--r--sources/MyRuLib/FbGenres.h2
-rw-r--r--sources/MyRuLib/FbImportCtx.cpp23
-rw-r--r--sources/MyRuLib/FbImportCtx.h2
-rw-r--r--sources/MyRuLib/FbImportReader.cpp14
-rw-r--r--sources/MyRuLib/FbImportThread.h4
-rw-r--r--sources/MyRuLib/FbInternetBook.cpp26
-rw-r--r--sources/MyRuLib/FbMasterInfo.cpp10
-rw-r--r--sources/MyRuLib/FbMasterInfo.h10
-rw-r--r--sources/MyRuLib/FbMasterTypes.cpp32
-rw-r--r--sources/MyRuLib/FbMasterTypes.h28
-rw-r--r--sources/MyRuLib/FbMenu.cpp2
-rw-r--r--sources/MyRuLib/FbParams.h2
-rw-r--r--sources/MyRuLib/FbUpdateThread.cpp6
-rw-r--r--sources/MyRuLib/FbViewData.cpp4
-rw-r--r--sources/MyRuLib/FbViewThread.cpp8
-rw-r--r--sources/MyRuLib/dialogs/FbAuthorDlg.cpp14
-rw-r--r--sources/MyRuLib/dialogs/FbConfigDlg.cpp26
-rw-r--r--sources/MyRuLib/dialogs/FbConfigDlg.h56
-rw-r--r--sources/MyRuLib/dialogs/FbDataOpenDlg.cpp6
-rw-r--r--sources/MyRuLib/dialogs/FbDirImportDlg.cpp2
-rw-r--r--sources/MyRuLib/dialogs/FbExportDlg.cpp2
-rw-r--r--sources/MyRuLib/dialogs/FbParamsDlg.cpp28
-rw-r--r--sources/MyRuLib/dialogs/FbParamsDlg.h18
-rw-r--r--sources/MyRuLib/dialogs/FbSequenDlg.cpp12
-rw-r--r--sources/MyRuLib/dialogs/FbTitleDlg.cpp48
-rw-r--r--sources/MyRuLib/dialogs/FbTitleDlg.h26
-rw-r--r--sources/MyRuLib/frames/FbFrameClss.cpp6
-rw-r--r--sources/MyRuLib/frames/FbFrameClss.h8
-rw-r--r--sources/MyRuLib/frames/FbFrameFind.h2
-rw-r--r--sources/MyRuLib/frames/FbFrameFldr.cpp8
-rw-r--r--sources/MyRuLib/frames/FbFrameGenr.h2
-rw-r--r--sources/MyRuLib/frames/FbFrameHtml.cpp6
-rw-r--r--sources/MyRuLib/frames/FbFrameInfo.cpp6
-rw-r--r--sources/MyRuLib/models/FbAuthList.cpp22
-rw-r--r--sources/MyRuLib/models/FbAuthList.h12
-rw-r--r--sources/MyRuLib/models/FbClssTree.cpp16
-rw-r--r--sources/MyRuLib/models/FbClssTree.h6
-rw-r--r--sources/MyRuLib/models/FbDateTree.cpp4
-rw-r--r--sources/MyRuLib/models/FbDateTree.h6
-rw-r--r--sources/MyRuLib/models/FbExportTree.cpp6
-rw-r--r--sources/MyRuLib/models/FbExportTree.h6
-rw-r--r--sources/MyRuLib/models/FbFilterTree.cpp2
-rw-r--r--sources/MyRuLib/models/FbGenrTree.cpp4
-rw-r--r--sources/MyRuLib/models/FbGenrTree.h6
-rw-r--r--sources/MyRuLib/models/FbSeqnList.cpp12
-rw-r--r--sources/MyRuLib/models/FbSeqnList.h10
-rw-r--r--sources/MyRuLib/wx/FbSQLite3.h313
-rw-r--r--sources/WxSQLite3/wxsqlite3.cpp4297
-rw-r--r--sources/WxSQLite3/wxsqlite3.patch966
-rw-r--r--sources/workspace/faxpp.cbp8
-rw-r--r--sources/workspace/myrulib.cbp1
-rw-r--r--sources/workspace/wxsqlite3.cbp10
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 />