Für den Zugriff auf SQLite-Datenbanken existieren bereits einige Lösungen, wie z.B. die folgenden:
- wxSQLite : Hierbei handelt es sich um eine wxWidgets-Klasse für die SQLite-Version 2.x. Die SQLite-Version 3.x verfügt über eine Vielzahl zusätzlicher Eigenschaften, die von dieser Klasse nicht unterstützt werden.
- CppSQLite : Diese Klasse ist nicht speziell für wxWidgets entwickelt worden, so dass z.B. Zeichenkettenkonvertierungen fehlen, aber zumindest werden die neueren Eigenschaften der SQLite-Version 3.x unterstützt.
- wxDatabase : Bei dieser wxWidgets-Klasse handelt es sich um den Nachfolger der Komponente databaselayer,
eine Datenbank-Abstraktion, die transparent die Datenbanken SQLite3, PostGreSQL und MySQL/MariaDB unterstützt.
Die Entwicklung der Komponente wxSQLite3 wurde von allen drei erwähnten SQLite Schnittstellen beeinflusst. wxSQLite3 versucht nicht die zugrunde liegende Datenbank zu verstecken, sondern unterstützt im Gegenteil fast alle speziellen Eigenschaften der SQLite-Version 3.x wie z.B. die Bereitstellung benutzerdefinierter skalarer oder aggregierender Funktionen.
Da SQLite Zeichenketten in UTF-8-Codierung speichert, konvertieren die wxSQLite3 Methoden automatisch zwischen wxStrings-Zeichenketten und UTF-8-Zeichenketten. Am besten funktioniert dies für die Unicode-Version von wxWidgets.
Die mit Doxygen generierte wxSQLite3-Dokumentation ist online verfügbar. Alternativ kann sie aus dem entsprechenden GitHub-Branch heruntergeladen werden.
Wichtige Hinweise:
Aufgrund einer Änderung im SQLite-Quellcode vom 7. Februar 2020 ("Simplify the code by removing the unsupported and undocumented SQLITE_HAS_CODEC compile-time option") ist die Weiterpflege der bisherigen Implementierung der Verschlüsselungserweiterung nicht mehr mit vertretbarem Aufwand möglich. In dem separaten GitHub-Projekt SQLite3 Multiple Ciphers wird eine Neuimplementierung der Verschlüsselungserweiterung zur Verfügung gestellt, die mit zukünftigen SQLite-Versionen kompatibel ist. Beginnend mit Version 4.6.0 wird diese neue Implementierung in wxSQLite3 eingesetzt.
Die bisher im Zusammenhang mit Releases bereitgestellten vorkompilierten SQLite3-Binärdateien für Windows werden auch in Zukunft zur Verfügung gestellt - allerdings nunmehr im Projekt SQLite3 Multiple Ciphers. Die Quelldateien der bisherigen Verschlüsselungserweiterung wurden aus dem GitHub-Repository entfernt.
Feedback sowie Fehlerberichte sind willkommen.
Neuigkeiten
- Oktober 2024
-
Die Version 4.9.12 wurde freigegeben und steht zum Download bereit. Diese Version ist sowohl zu wxWidgets 2.8.12, 3.0.x, 3.1.x als auch 3.2.x kompatibel.
Wichtiger Hinweis: Ein Update auf die neue Version wird empfohlen, da in der unterlagerten SQLite3 Multiple Ciphers Bibliothek einige Fehler behoben wurden, die potentiell zu beschädigten Datenbankdateien führen können (auch wenn dies nicht zwangsläufig und nur unter gewissen Randbedingungen auftritt).
Wichtige Hinweise bei Verwendung des WAL-Journal-Modus
Zur Unterstützung konkurrierenden Zugriffs auf SQLite-Datenbanken im WAL-Journal-Modus mit Alt-Systemen wie z.B. System.Data.SQLite oder SQLCipher wurde mit Version 1.3.0 eine neue Methode zur Verschlüsselung der Dateninhalte in WAL-Journalen eingeführt.
Bedauerlicherweise sind WAL-Journale, die von Versionen <= 1.2.5 hinterlassen wurden, nicht kompatibel mit der neuen Implementierung. Um trotzdem auf WAL-Journale früherer Versionen zugreifen zu können, wurde der Konfigurationparameter mc_legacy_wal eingeführt. Falls der Parameter den Wert 1 hat, wird die frühere Verschlüsselungsimplementierung für WAL-Journale verwendet. Der Standardwert dieses Parameters kann zur Übersetzungszeit festgelegt werden, indem das Symbol SQLITE3MC_LEGACY_WAL entsprechend gesetzt wird. Der tatsächliche Wert kann zur Laufzeit mittels Pragma oder URI-Parameter mc_legacy_wal festgelegt werden.
Grundsätzlich ist es möglich, den WAL-Kompatibilitätsmodus generell zu verwenden, aber es wird dringend empfohlen, ihn nur zu verwenden, um WAL-Journale, die von früheren Versionen hinterlassen wurden, ohne Datenverlust zu verarbeiten.
Hinweis: Der SQLite-Quellcode sowie der Quellcode des Erweiterungsmoduls mit zusätzlichen SQL-Funktionen ist in den Release-Paketen enthalten.
Änderung der Verschlüsselungskomponente
Beginnend mit wxSQLite3-Version 4.0.0 wurde die Verschlüsselungskomponente dahingehend angepasst, dass das Verschlüsselungsverfahren zur Laufzeit ausgewählt werden kann. Folgende Methoden werden derzeit unterstützt:
- AES 128 Bit CBC - Ohne HMAC (wxSQLite3, Standardverfahren bis Version 3.5.9)
- AES 256 Bit CBC - Ohne HMAC (wxSQLite3)
- ChaCha20 - Poly1305 HMAC (sqleet, neues wxSQLite3-Standardverfahren)
- AES 256 Bit CBC - SHA1/SHA256/SHA512 HMAC (SQLCipher, Datenbankversionen 1, 2, 3 und 4)
- RC4 - Ohne HMAC (System.Data.SQLite) [seit Version 4.6.0]
- Ascon 128 - Ascon Tag (Ascon) [seit Version 4.9.8]
Beginnend mit wxSQLite3-Version 3.1.0 wurden die wxSQLite3-Verschlüsselungsverfahren AES-128-Bit und AES-256-Bit angepasst, um ein potentielles Problem mit der Erstellung unbrauchbarer verschlüsselter Datenbanken zu beheben.
Die Wahrscheinlichkeit, dass Anwender früherer Versionen der Verschlüsselungskomponente von dem Problem betroffen sind, ist relativ gering, nämlich höchstens 1 zu 8192, d.h., weniger als 0,02 %. Nichtsdestoweniger wurde beschlossen, diesen Schwachpunkt der Implementierung zu beheben.
Von jetzt an werden die Bytes 16 bis 23 des Datenbankkopfes unverschlüsselt gespeichert (so wie es auch in der kostenpflichtigen Verschlüsselungskomponente SEE (SQLite Encryption Extension) der SQLite-Entwickler der Fall ist). Dies ist wichtig, da diese Bytes im SQLite-Code gelesen und interpretiert werden, bevor jedwede Verschlüsselungskomponente die Chance erhält, den Datenbankkopf zu entschlüsseln.
Die gute Nachricht für Anwender früherer Versionen der wxSQLite3-Verschlüsselungskomponente ist, dass die neue Version bestehende verschlüsselte Datenbank transparent in das neue Format überführt. Allerdings funktioniert dies nur in eine Richtung, d.h., sobald eine Datenbankdatei in das neue Format überführt wurde, kann sie von früheren Versionden der Verschlüsselungskomponente nicht mehr verarbeitet werden. Stattdessen wird man die Fehlermeldung "Keine Datenbank oder verschlüsselt" erhalten.
Historie
Neu in Version 4.9.12 - Oktober 2024
Neu in Version 4.9.11 - Juni 2024
Neu in Version 4.9.10 - März 2024
- Upgrade auf SQLite3 Multiple Ciphers version 1.8.4 (basierend auf SQLite 3.45.2)
- Deaktivierung der Benutzerauthentifizierungserweiterung in den Standardeinstellungen. (Das SQLite-Entwicklerteam hat die Benutzerauthentifizierungserweiterung im Januar 2024 formal als veraltet eingestuft. Daher ist geplant, die zugehörigen API-Methoden in wxSQLite3 in einer zukünftigen Version zu entfernen. Vorläufig wird sie jedoch nur in den Projektdateien deaktiviert.)
Neu in Version 4.9.9 - Januar 2024
Neu in Version 4.9.8 - November 2023
Neu in Version 4.9.7 - November 2023
- Upgrade auf SQLite3 Multiple Ciphers version 1.7.4 (basierend auf SQLite 3.44.0)
- Verhinderung von Abstürzen aufgrund nicht initialisierter Verschlüsselungstabellen, falls Konfigurationsfunktionen vor Initialisierung der SQLite-Bibliothek aufgerufen wurden
Neu in Version 4.9.6 - Oktober 2023
Neu in Version 4.9.5 - September 2023
Neu in Version 4.9.4 - Mai 2023
Neu in Version 4.9.3 - März 2023
Neu in Version 4.9.2 - Februar 2023
- Upgrade auf SQLite3 Multiple Ciphers version 1.6.0 (basierend auf SQLite 3.41.0)
- Fehler in Methode wxSQLite3Database::SetJournalMode behoben (es wurde stets DELETE zurückgegeben)
- Methode wxSQLite3Database::Open erweitert, um das zu verwendende VFS zu festzulegen
- Method wxSQLite3Database::IsInterrupted hinzugefügt
Neu in Version 4.9.1 - November 2022
Neu in Version 4.9.0 - September 2022
Neu in Version 4.8.2 - Juli 2022
Neu in Version 4.8.1 - Mai 2022
Neu in Version 4.8.0 - April 2022
Neu in Version 4.7.9 - April 2022
Neu in Version 4.7.8 - März 2022
Neu in Version 4.7.7 - Februar 2022
Neu in Version 4.7.6 - Januar 2022
Neu in Version 4.7.5 - November 2021
Neu in Version 4.7.4 - Juli 2021
Neu in Version 4.7.3 - Juni 2021
Neu in Version 4.7.2 - Mai 2021
Neu in Version 4.7.1 - April 2021
Neu in Version 4.7.0 - April 2021
Neu in Version 4.6.10 - April 2021
Neu in Version 4.6.9 - April 2021
Neu in Version 4.6.8 - März 2021
Neu in Version 4.6.7 - März 2021
Neu in Version 4.6.6 - März 2021
Neu in Version 4.6.5 - März 2021
- Upgrade auf SQLite3 Multiple Ciphers version 1.2.0 (basierend auf SQLite 3.35.0)
- Aktivierte neue SQLite-Erweiterung mit mathematischen Funktionen (eingeführt in SQLite 3.35.0)
- Speicherleck in Methode wxSQLite3Database::GetTable behoben
- Angepasste Build-Dateien (DLL-Variante compiliert mit MinGW/GCC verwendete fehlerhafte Datei-Erweiterung)
Neu in Version 4.6.4 - Dezember 2020
Neu in Version 4.6.3 - Dezember 2020
Neu in Version 4.6.2 - Dezember 2020
Neu in Version 4.6.1 - Oktober 2020
- SQLite-Erweiterung VSV (Variably Separated Values) hinzugefügt
Neu in Version 4.6.0 - August 2020
- wxSQLite3-Verschlüsselungserweiterung ersetzt durch die SQLite3 Multiple Ciphers Verschlüsselungserweiterung (zur Unterstützung von SQLite-Version 3.32.0 und höher)
- Upgrade auf SQLite-Version 3.33.0
- Unterstützung für das Verschlüsselungsschema RC4 von System.Data.SQLite auf allen Plattformen hinzugefügt
Neu in Version 4.5.1 - Januar 2020
- Upgrade auf SQLite-Version 3.31.1
Neu in Version 4.5.0 - Januar 2020
- Upgrade auf SQLite-Version 3.31.0
- Geänderte Signatur der Methode wxSQLite3Database::CreateFunction
Neu in Version 4.4.8 - Oktober 2019
- Upgrade auf SQLite-Version 3.30.1
- Anpassung der Verschlüsselungserweiterung um Unterstützung für den "shared cache mode" von SQLite
Neu in Version 4.4.7 - Oktober 2019
- Upgrade auf SQLite-Version 3.30.0
Neu in Version 4.4.6 - September 2019
- Fehlende Anwendung der Verschlüsselungsmethode in Methode wxSQLite3Database::ReKey ergänzt
Neu in Version 4.4.5 - August 2019
- Fehlende Kompatibilität mit wxWidgets 2.8.12 wieder hergestellt
Neu in Version 4.4.4 - August 2019
- Upgrade auf SQLite-Version 3.29.0
- Unterstützung für SQLite-Logging hinzugefügt
- Unterstützung für Visual Studio 2019 hinzugefügt
- Unterstützung für CMake hinzugefügt
- Build-Dateien überarbeitet, um Probleme mit dem Bauen statischer Bibliotheken zu beheben
- Doppelung von Fehlermeldungen für verschiedene wxWidgets-Versionen beseitigt
- Fehlenden Aufruf des Fortschritts-Callback in wxSQLite3Database::Restore eingefügt
- Problem mit ohne Warnung fehlschlagender Methode wxSQLite3Transaction::Commit behoben
- Problem mit benannten Collections, das Abstürze nach sich ziehen konnte, behoben
Neu in Version 4.4.3 - Mai 2019
- Upgrade auf SQLite-Version 3.28.0
Neu in Version 4.4.2 - Februar 2019
- Upgrade auf SQLite-Version 3.27.2
Neu in Version 4.4.1 - Februar 2019
- Upgrade auf SQLite-Version 3.27.1
Neu in Version 4.4.0 - Dezember 2018
- Upgrade auf SQLite-Version 3.26.0
- Unterstützung für das Datenbankformat SQLCipher 4 hinzugefügt
Neu in Version 4.3.0 - November 2018
- Upgrade auf SQLite-Version 3.25.3
- Verschlüsselungserweiterung angepasst, um die Konfigurierung der Verschlüsselungsmethode über die Datenbank-URI zu unterstützen
Neu in Version 4.2.0 - Oktober 2018
- Methode wxSQLite3Database::GetKeySalt) für den Zugriff auf das "Schlüsselsalz" einer verschlüsselten Datenbank hinzugefügt
- Speicherleck in den Methoden wxSQLite3ResultSet::GetExpandedSQL und wxSQLite3Statement::GetExpandedSQL behoben
- Verschlüsselungserweiterung angepasst, um die Spezifizierung roher Schlüssel (und Salz) für die Verschlüsselungsmethode ChaCha20 (sqleet) zu ermöglichen
Neu in Version 4.1.1 - Oktober 2018
- Upgrade auf SQLite-Version 3.25.2
Neu in Version 4.1.0 - September 2018
- Upgrade auf SQLite-Version 3.25.1
- Unterstützung für SQL-Window-Funktionen hinzugefügt
- Anpassung der Verschlüsselungserweiterung, um auf übereinstimmende Seitengrößen bei Neuverschlüsselung einer Datenbank zu prüfen
- SQLite-Erweiterung GEOPOLY aktiviert
Neu in Version 4.0.4 - Juni 2018
- Upgrade auf SQLite-Version 3.24.0
Neu in Version 4.0.3 - April 2018
- Verschlüsselungskomponente angepasst, um das SQLite-Backup-API besser zu unterstützen
Neu in Version 4.0.2 - April 2018
- Upgrade auf SQLite-Version 3.23.1
Neu in Version 4.0.1 - April 2018
- Fehler in der Funktion zur Verschlüsselungsänderung behoben
Neu in Version 4.0.0 - April 2018
- Unterstützung für die Auswahl der Verschlüsselungsmethode zur Laufzeit hinzugefügt
- Methoden zur Anbindung und Trennung von Datenbanken zu einer Datenbankverbindung hinzugefügt
- Code, der sogenannte "statement buffers" verwendet, überarbeitet
- Upgrade auf SQLite-Version 3.23.0
Neu in Version 3.5.9 - Januar 2018
- Upgrade auf SQLite-Version 3.22.0
Neu in Version 3.5.8 - November 2017
- Upgrade auf SQLite-Version 3.21.0
Neu in Version 3.5.7 - September 2017
- Upgrade auf SQLite-Version 3.20.1
Neu in Version 3.5.6 - August 2017
- Upgrade auf SQLite-Version 3.20.0
- Unterstützung für persistente "prepared statements" hinzugefügt
- Unterstützung für die Anbindung von Zeigern hinzugefügt (neue SQLite-Schnittstelle für "Pointer-Binding")
- Mehrere SQLite-Erweiterungen (csv, sha3, carray, fileio, series) zur beigefügten SQLite-Bibliothek hinzugefügt
- Build-Dateien angepasst, so dass der Parameter SQLITE_MAX_ATTACHED zugänglich ist, damit die maximale Anzahl verbundener Datenbanken leichter angepasst werden kann.
Neu in Version 3.5.5 - Juni 2017
- Upgrade auf SQLite-Version 3.19.3
Neu in Version 3.5.4 - Juni 2017
- Upgrade auf SQLite-Version 3.19.2
Neu in Version 3.5.3 - März 2017
- Upgrade auf SQLite-Version 3.18.0
- Kleinere Modifikation in Datei wxsqlite3.pc.in, um ein Problem mit dem Tool pkgconfig zu beheben
Neu in Version 3.5.2 - März 2017
- Upgrade auf SQLite-Version 3.17.0
- Kleinerer Fehler in der SQLite-Verschlüsselungserweiterung bezüglich des Symbols SQLITE_DEBUG behoben
- Build-System für GNU make abgeändert (Unterstützung für monolithische wxWidgets-Bibliothek)
Neu in Version 3.5.1 - Februar 2017
- Versionsinformation als Windows-Resource für DLLs hinzugefügt
- Premake5 Build-Dateien für Visual C++ überarbeitet (korrigierte Einstellungen für die Debug-Umgebung)
- Auflösung der Abhängigkeiten von wxWidgets-Bibliotheken für Visual C++ unter Verwendung der speziellen Header-Datei setup.h von wxWidgets für MSVC
Neu in Version 3.5.0 - Januar 2017
- Upgrade auf SQLite-Version 3.16.2
- SQLite3-Bibliothek ist nun integraler Bestandteil von wxSQLite3
Ein wesentlicher Vorteil ist, dass dadurch Versions- oder Konfigurationskonflikte weitgehend vermieden werden. Außerdem steht so die SQLite3-Verschlüsselung standardmäßig zur Verfügung.
- Build-System generalüberholt
Das veraltete, mit bakefile generierte Build-System wurde durch ein mit (einer leicht modifizierten Version von) premake5 generiertes Build-System ersetzt. Unter Windows werden Visual C++ 2010, 2012, 2013, 2015 und 2017 und GNU Make unterstützt; für Linux und Mac OS X werden manuell erstellte autoconf-Dateien bereitgestellt.
Unter Windows wurde der Bibliotheksname auf wxsqlite3 verkürzt; unter Linux und Mac OS X wurden die Namen mit wxcode-Präfix und wxWidgets-Plattform und -Version vorerst beibehalten. Allerdings ist geplant, auch dort den Namen zu verkürzen, falls dagegen keine Einwände geäußert werden.
Unter Windows wurden Konfigurationsdateien (wx_setup.props for Visual C++, config.gcc for GNU gcc) eingeführt, um eine leichte Anpassbarkeit der Konfiguration zu ermöglichen.
- Kontinuierliche Integration mit Travis
Hiermit wird automatisch gewährleistet, dass wxSQLite3 unter Linux und Mac OS X einwandfrei kompiliert werden kann.
Neu in Version 3.4.1 - Oktober 2016
- Upgrade auf SQLite-Version 3.15.0
- SQLite3-Verschlüsselungserweiterung angepasst, damit sie kompatibel zu SQLite-Version 3.15.0 ist
Neu in Version 3.4.0 - August 2016
- Upgrade auf SQLite version 3.14.1
- Methode wxSQLite3Statement::GetExpandedSQL hinzugefügt
- Methode wxSQLite3ResultSet::GetExpandedSQL hinzugefügt
- Erweiterungsmodul CSV zur SQLite3-Verschlüsselungserweiterung hinzugefügt
Neu in Version 3.3.1 - April 2016
- Upgrade auf SQLite version 3.12.1
- Methode wxSQLite3Database::GetSystemErrorCode hinzugefügt
- wxSQLitePlus-Datenbank-Browser (Beispielanwendung dbadmin) entfernt; eine aktiv weiterentwickelte Version findet sich unter https://github.com/guanlisheng
Neu in Version 3.3.0 - Dezember 2015
- Upgrade auf SQLite version 3.9.2 (einschließlich angepasstem Quellcode der SQLite-Amalgamation, um ein Problem im Zusammenhang mit dem User-Authentication-Modul zu beheben)
- Verlagerung der aktiven Entwicklung von SourceForge zu GitHub
- Entfernung der Build-Dateien für wxWidgets 2.9.x
- Standard-Build für wxWidgets 3.0.x
- Unterstützung für premake5 (Version 5.0-alpha6 oder später)
Neu in Version 3.2.1 - März 2015
- Upgrade auf SQLite 3.8.8.3
Neu in Version 3.2.0 - Dezember 2014
- Upgrade auf SQLite 3.8.7.4
- Unterstützung für das SQLite-Modul zur Anwender-Authentifizierung
Neu in Version 3.1.1 - Juni 2014
Neu in Version 3.1.0 - Mai 2014
- Upgrade auf SQLite 3.8.4.3
- Parameter isDeterministic zur Methode wxSQLite3Database::CreateFunction hinzugefügt
- Neues GUI-Beispielprogramm hinzugefügt
- Geänderte Implementierung der SQLite3-Verschlüsselungskomponente
Das neue GUI-Beispielprogramm zeigt die Verwendung von
- SQLite in einer wxWidgets-basierten GUI-Anwendung
- Speicherung einer Baumstruktur in einer SQLite-Datenbank
- Drag & Drop von Ordnern innerhalb einer Baumdarstellung
- Verschieben oder Kopieren von Projektreferenzen mittels Drag & Drop
Neu in Version 3.0.6 - Dezember 2013
- Upgrade auf SQLite 3.8.2
- Build-Support für wxWidgets 3.0 hinzugefügt
- Verschlüsselungskomponente angepasst, um Version 2 der SQLite3-Verschlüsselungsschnittstelle zu unterstützen
Neu in Version 3.0.5 - September 2013
- Upgrade auf SQLite 3.8.0.2
- Methode zum Setzen des temporären Dateiverzeichnisses für SQLite unter Windows hinzugefügt
Neu in Version 3.0.4 - August 2013
- Upgrade auf SQLite 3.8.0
- Methode zur Abfrage von Performanz-Charakteristiken von "prepared statements" hinzugefügt
Neu in Version 3.0.3 - März 2013
- Upgrade auf SQLite 3.7.16
Neu in Version 3.0.2 - Dezember 2012
- Interne SQLite-Datenstruktur korrigiert, um Compiler-Warnungen zu beheben
- Methode wxSQLite3Exception::ErrorCodeAsString geändert, so dass die Fehlermeldungen zurückgegeben werden, die SQLite selbst bereitstellt
Neu in Version 3.0.1 - November 2012
- Finalize-Methoden aufgeräumt und optimiert
- Methode wxSQLite3Database::Close geändert, um potentielle Speicherlecks zu vermeiden
- Methode wxSQLite3Database::GetWrapperVersion hinzugefügt
- Methode wxSQLite3Database::IsReadOnly hinzugefügt
- Methode wxSQLite3Statement::BindUnixDateTime hinzugefügt
- Methode wxSQLite3ResultSet::GetUnixDateTime hinzugefügt
- Methode wxSQLite3ResultSet::GetAutomaticDateTime hinzugefügt
- Potentielles Speicherleck in Methode wxSQLite3Database::ExecuteUpdate behoben
- Datei wxsqlite3.pc auf Wunsch von Fedora-Projekt-Entwicklern hinzugefügt
- Im Konstruktor der Klasse wxSQLite3Transaction assert durch wxASSERT ersetzt
Neu in Version 3.0.0.1 - Februar 2012
Version 3.0.0.1 behebt einen Fehler in der Methode wxSQLite3Statement::Reset, der zu einem Programmabsturz führen konnte, wenn das zugehörige SQLite-Statement bereits finalisiert war. Desweiteren wurden in der Klasse wxSQLite3Exception einige fehlende SQLite-Fehlercodes ergänzt.
Neu in Version 3.0.0 - Januar 2012
- Neue Methoden hinzugefügt zur Vereinfachung bzw. um neue SQLite-Eigenschaften zu unterstützen: wxSQLite3Database::Vacuum, wxSQLite3Database::GetDatabaseFilename, wxSQLite3Database::ReleaseMemory, wxSQLite3ResultSet::CursorMoved, wxSQLite3Statement::IsBusy
- Fehler in Methode operator= of wxSQLite3StringCollection behoben, der bei einer Zuweisung eine endlose Rekursion zur Folge hatte.
- Das Konzept der Eigentümerschaft an internen SQLite3-Zeigern wurde zugunsten von Zeigern mit Referenzzählung aufgegeben. Dies erlaubt eine wesentlich flexiblere Nutzung der wxSQLite3-Klassen. Hierin liegt der Hauptgrund für den wxSQLite3-Versionssprung auf 3.x.
- Änderung der SQLite3-Verschlüsselungserweiterung (Definition des int64-Datentyps für den SHA2-Algorithmus). Dadurch wird die Kompilierung von SQLite3 mit Verschlüsselungserweiterung deutlich stabiler.
- Die Kompilierunterstützung für das dbadmin-Beispielprogramm wurde fallen gelassen, da es immer wieder Probleme damit gab. Die zugehörigen Quelldateien werden für diejenigen, die an einem GUI-Beispiel interessiert sind, weiterhin mit ausgeliefert.
- Um die Erzeugung einer SQLite3-Bibliothek oder -DLL mit Verschlüsselungsunterstützung zu vereinfachen, wurde Unterstützung für premake hinzugefügt. Für wxSQLite3 selbst ist ebenfalls experimentelle Unterstützung für premake vorhanden. Voraussetzung ist Premake 4.4-beta3 oder höher.
Neu in Version 2.1.3 - August 2011
- Optionaler Fortschritts-Callback für die Methoden Backup und Restore hinzugefügt. Das Minimal-Beispiel zeigt die Anwendung.
- Methode SetBackupRestorePageCount hinzugefügt, mit der die Anzahl von Seiten gesetzt werden kann, die innerhalb eines Backup- bzw. Restore-Zyklus kopiert werden.
- In der Verschlüsselungserweiterung wurde das Standard-Verhalten für mittels ATTACH eingebundene Datenbanken im Falle einer verschlüsselten Haupt-Datenbank korrigiert. Jetzt wird der Schlüssel der Haupt-Datenbank verwendet, falls im ATTACH kein Schlüssel explizit gesetzt wurde. Früher wurde eine nicht-verschlüsselte ATTACH-Datenbank angenommen.
Neu in Version 2.1.2 - Juli 2011
- Aktualisierung auf SQLite-Version 3.7.7.1
- Die Klasse wxSQLite3Transaction wurde ausnahme-sicher umgeschrieben. Für den Fall, dass das automatische Rollback einer Transaktion fehlschlägt, kann der Fehlerstatus des letzten Rollback-Versuchs in dem Code, der die Ausnahmebedingung behandelt, abgefragt werden.
Neu in Version 2.1.1 - April 2011
- Aktualisierung auf SQLite-Version 3.7.6.1
- Methode wxSQLite3Statement::ExecuteScalar hinzugefügt
- Write-ahead-log Checkpoint-Methode an neue SQLite API angepasst (v2)
Neu in Version 2.1.0 - März 2011
- Aktualisierung auf SQLite-Version 3.7.5
- Als GUI-Beispiel ist nun wxSQLite+, ein Datenbank-Verwaltungsprogramm geschrieben von Fred Cailleau-Lepetit, enthalten. Für die Verwendung mit wxWidgets 2.8.x ist es erforderlich, die "stc"-Bibliothek (scintilla) im "contrib"-Verzeichnis von wxWidgets zu erzeugen. Zu beachten ist, dass wxSQLite+ unter GPL-Lizenz steht.
Neu in Version 2.0.2 - Dezember 2010
- Aktualisierung auf SQLite-Version 3.7.4
- Unterstützung für die Bindung eines BLOB-Objekts an eine neue Tabellenzeile
- Interstützung für die Feststellung, ob ein SQL-Statement nur lesend auf die Datenbank wirkt
Neu in Version 2.0.1 - Oktober 2010
- Aktualisierung auf SQLite-Version 3.7.2
- Parameter transferStatementOwnership wurde zur Methode wxSQLite3Statement::ExecuteQuery hinzugefügt, um die Nutzung des zurückgegebenen Ergebnismenge über die Lebensdauer der wxSQLite3Statement-Instanz hinaus zu ermöglichen.
- Eine Inkompatibilität bei der Übersetzung der SQLite-Verschlüsselungserweiterung mit SQLite-Version 3.7.2 und höher wurde behoben.
Neu in Version 2.0.0 - Juli 2010
- Aktualisierung auf SQLite-Version 3.7.0
- Behebung eines Fehlers in Klasse wxSQLite3ResultSet
- Unterstützung für den Write-Ahead-Log-Journalmodus von SQLite
- Ergänzung benannter Wertelisten, um die dynamische Parametrisierung von IN-Aufzählungen in WHERE-Bedingungen mit beliebig großen Wertelisten zu erleichtern (siehe Klasse wxSQLite3NamedCollection)
- Änderung der Behandlung von UTF-8-Zeichenketten auf Nutzung der Methoden To/FromUTF8 der Klasse wxString (erfordert wxWidgets 2.8.4 oder höher)
Neu in Version 1.9.9 - März 2010
- Aktualisierung auf SQLite-Version 3.6.23
- Behebung eins Fehlers beim Übersetzen für dynamisches Laden von SQLite
- Ergänzung statischer Methoden in der Klasse wxSQLite3Database, um die Diagnostik von Compiler-Optionen
zur Laufzeit anzusprechen
- Ergänzung der Methode FormatV in der Klasse wxSQLite3StatementBuffer
Neu in Version 1.9.8 - Februar 2010
- Aktualisierung auf SQLite-Version 3.6.22
- Behebung eins Fehlers beim Übersetzen ohne vorübersetzte Header
- Experimentelle Unterstützung von 256-Bit-AES-Verschlüsselung in der optionalen Verschlüsselungserweiterung.
Neu in Version 1.9.7 - November 2009
- Aktualisierung auf SQLite-Version 3.6.20
- Neue Methoden, um die Unterstützung von Fremdschlüsseln zu aktivieren bzw. zu deaktivieren
Neu in Version 1.9.6 - September 2009
- Aktualisierung auf SQLite-Version 3.6.18
- Neue Methode von wxSQLite3Database, um die "SQLite library source id" zu bestimmen.
- Neuer "flags" Parameter in der Methode wxSQLite3Database::Open, um zusätzliche Kontrolle über die Datenbankverbindung zu erhalten (siehe http://www.sqlite.org/c3ref/open.html für weitergehende Informationen).
- Beseitigung eines potentiellen Speicherlecks in der Klasse wxSQLite3Statement.
- Konvertierung der Verschlüsselungserweiterung von C++ in reines C, um sie mit der SQLite Amalgamation Quellcode-Distribution kompatibel zu machen.
Gute Nachricht für all diejenigen, die für die Verwaltung (mit der wxSQLite3-Verschlüsselungserweiterung) verschlüsselter Datenbanken eine GUI-Anwendung suchen:
Fred Cailleau-Lepetit, der Entwickler von wxSQLitePlus, ein SQLite-Datenbank-Verwaltungsprogramm basierend auf wxWidgets (und wxSQLite3) veröffentlicht unter GPL3-Lizenz, hat Version 0.3.0 von wxSQLitePlus freigegeben, die die SQLite-Verschlüsselungserweiterung unterstützt. Quelltexte und Binärdateien für Windows und Linux können von http://cfred.free.fr/download.php#wxsqliteplus heruntergeladen werden.
Neu in Version 1.9.5 - Februar 2009
- Aktualisierung auf SQLite-Version 3.6.11
- Das mit SQLite-Version 3.6.11 neu eingeführte Backup/Restore-API wird unterstützt.
- Eine Klasse für eine benutzer-definierte Funktion zur Unterstützung des REGEXP-Operators von SQLite steht zur Verfügung.
Neu in Version 1.9.4 - Januar 2009
- Aktualisierung auf SQLite-Version 3.6.10
- Es gibt nun Unterstützung für Savepoints, die mit SQLite Version 3.6.8 eingeführt wurden.
- Eine Methode IsOk wurde in den Klassen wxSQLite3Statement, wxSQLite3Table und wxSQLite3ResultSet eingeführt, so dass Instanzen dieser Klassen prüfen können, ob die zugeordnete SQLite-Datenbank oder das zugeordnete SQLite-Statement gültig sind, ohne dass eine Ausnahme geworfen wird.
Neu in Version 1.9.3 - Dezember 2008
- Aktualisierung auf SQLite-Version 3.6.7
- Ein Fehler in der Methode wxSQLite3Table::GetDouble wurde behoben. (Die Konvertierung von einer Zeichenkette in eine Gleitkommazahl schlug in Nicht-US-Ländereinstellungen fehl.)
- Das Build-System wurde auf Basis von Bakefile version 0.2.5 neu generiert.
Neu in Version 1.9.2 - November 2008
- Aktualisierung auf SQLite-Version 3.6.6
- Es wurde eine RAII-Transaktionsklasse hinzugefügt, die ein wxSQLite3-Anwender beigesteuert hat.
- Da SQLite inzwischen in der Binärdistribution den Zugriff auf Meta-Informationen unterstützt, enthält die wxSQLite3-Distribution ab jetzt keine spezielle DLL mehr für diesen Anwendungszweck.
Neu in Version 1.9.1 - September 2008
- Aktualisierung auf SQLite-Version 3.6.2
- Für benutzer-definierte Aggregierungsfunktionen wurde eine eigene Schrittzählung implementiert, da die Funktion sqlite3_aggregate_count inzwischen als veraltet gekennzeichnet ist.
- Die Methode wxSQLite3Database::TableExists wurde dahingehend erweitert, dass nicht nur die Haupt-Datenbank, sondern auch zugeordnete (attached) Datenbanken abgefragt werden können.
- Eine neue Methode wxSQLite3Database::GetDatabaseList wurde hinzugefügt, die eine Liste aller zugeordneten Datenbanken zurückliefert.
Neu in Version 1.9.0 - Juli 2008
- Aktualisierung auf SQLite-Version 3.6.0
- Die optionale 128-Bit-AES-Verschlüsselungserweiterung wurde an die neue SQLite-Version angepasst.
- Neue Methoden zur Initialisierung und Terminierung der SQLite-Bibliothek.
Neu in Version 1.8.5 - Juni 2008
- Aktualisierung auf SQLite-Version 3.5.9
- Die Integration der optionalen 128-Bit-AES-Verschlüsselungserweiterung in die SQLite-Bibliothek wurde vereinfacht. Änderungen an Original-SQLite-Quelldateien sind nun nicht mehr erforderlich.
Neu in Version 1.8.4 - April 2008
- Aktualisierung auf SQLite-Version 3.5.8
- Unterstützung für den Zugriff auf Datenbank-Konfigurationsdaten (sqlite3_limits Schnittstelle).
- Änderung der Methode TableExists, so dass der Tabellenname ohne Berücksichtigung
von Groß/Kleinschreibung geprüft wird.
- Neugenerierung der Build-Dateien mit der aktuellsten bakefile-Version mit gleichzeitiger Behebung
einiger kleiner Probleme in den Build-Dateien.
Neu in Version 1.8.3 - Januar 2008
- Unterstützung des shared cache mode von SQLite
- Unterstützung für den Zugriff auf die ursprüngliche SQL-Anweisung für Statements (wxSQLite3Statment) und Ergebnismengen (wxSQLite3ResultSet). Dies erfordert SQLite 3.5.3 oder höher.
Neu in Version 1.8.2 - Dezember 2007:
- Aktualisierung auf SQLite-Version 3.5.4
- Quellcodeanpassungen für Verschlüsselungsunterstützung für alle SQLite Versionen von 3.3.1 bis 3.5.4 einschließlich
- Eine vorkompilierte SQLite-Shell für Windows mit Verschlüsselungsunterstützung ist enthalten
- Datums- und Zeitwerte können nun in der Datenbank als numerische Werte gespeichert werden; entweder als int64 (Millisekunden ab 1. Januar 1970) oder als double (Julianisches Datum). Dadurch können Zeichenkettenkonvertierungen, wie sie für das SQLite-Standarddatumsformat erforderlich sind, vermieden werden.
- Fehler in wxSQLite3Database::Begin behoben (fehlerhafter Transaktionstyp)
- In allen in der Windows-Distribution enthaltenen DLLs ist das FTS3-Erweiterungsmodul intern eingebunden
Neu in Version 1.8.1 - November 2007:
- Aktualisierung auf SQLite-Version 3.5.2
- Unterstützung für inkrementelle BLOB Ein/Ausgabe, die mit SQLite Version 3.4.0 eingeführt wurde
- Quellcodeanpassungen für Verschlüsselungsunterstützung für alle SQLite Versionen von 3.3.1 bis 3.5.2 einschließlich
- SQLite Link-Bibliotheken für MinGW unter Windows sind enthalten
- Übersetzungsoption
WXMAKINGLIB_WXSQLITE3
, um wxSQLite3 als statische Bibliothek zu erzeugen, wobei wxWidgets selbst als DLL vorliegt.
Neu in Version 1.7.3 - Mai 2007:
- Aktualisierung auf SQLite-Version 3.3.17
- Fehler in der Verschlüsselungserweiterung für SQLite3 behoben. (Der MD5 Algorithmus hat die plattform-abhängige Byte-Reihenfolge nicht berücksichtigt. Dies führte auf Big-Endian-Platformen zu nicht portablen Datenbank-Dateien.)
Neu in Version 1.7.2 - Februar 2007:
- Aktualisierung auf SQLite-Version 3.3.12
- Unterstützung für ladbare Erweiterungen ist jetzt optional. Zur Laufzeit kann ermittelt werden, mit welchen optionalen Erweiterungen wxSQLite3 compiliert wurde.
Neu in Version 1.7.1 - Januar 2007:
- Fehler in der Verschlüsselungserweiterung für SQLite3 behoben. (Der Aufruf von sqlite3_rekey in wxSQLite3Database::ReKey
konnte einen Programmabsturz verursachen, falls eine zuvor unverschlüsselte Datenbank verschlüsselt werden sollte.)
Neu in Version 1.7.0 - Januar 2007:
- Aktualisierung auf SQLite-Version 3.3.10 (Achtung: SQLite Version 3.3.9 oder höher erforderlich)
- Unterstützung für BLOBs als wxMemoryBuffer Objekte
- Unterstützung für ladbare Erweiterungen
- Optionale Unterstützung verschlüsselter Datenbanken
Neu in Version 1.6.0 - Juli 2006:
- Unterstützung für benutzerdefinierte Sortierfolgen
Zurück zum Seitenanfang