Hallo,
ich bin gerade dabei mich für ein kleines Programm mit SQLite3 zu beschäftigen.
Positiv finde ich ja daran, dass es...
- OpenSource ist
- nur eine DLL mitgegeben werden muss
- keine besonderen Serverinstallationen laufen müssen und die Weitergabe kostenlos ist
Negativ finde ich jedoch folgendes:
Ich habe mir den Wrapper von Tim Anderson runtergeladen und die aktuelle Version von SQLite3 - funktioniert soweit ganz gut.
Da ich aber Dateien an ein anderes Programm (und auch andere Personen) weitergeben möchte, wäre es schön, wenn man die DB verschlüsseln könnte.
Deshalb habe ich mir zur Verwaltung noch Navicat runtergeladen - damit kann man wunderbar seine DB´s in SQLite verwalten und auch neu erstellen.
Man kann dabei sogar ein Passwort vergeben, wie man es von größeren DB-Systemen gewohnt ist.
Dummerweise bekomme ich beim Aufruf einer verschlüsselten SQLite den 'schönen' Fehler 26 - File encrypted or not a Database!
Vielleicht gibt der Wrapper das garnicht her, oder, was ich garnicht mal ausschließen will bei einer Datenbank mit der ich mich erst seit kurzem beschäftige und trotz googlen keine Lösung finde,ich habe einen Fehler gemacht.
Das schöne an ner Connection mit SQLite - der Code ist so schön kurz...und sieht dann wie meiner aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| procedure TForm1.ToolButton1Click(Sender: TObject); Var Database : TsqliteDatabase; Table : TSQLiteTable; begin Database := TsqliteDatabase.Create( 'Data\test1.sqlite' ); Database.ExecSQL('Pragma key = koennteklappen'); Table := Database.GetTable( 'SELECT * FROM test' ); try Table.reset; While not Table.EOF do begin lb_1.Additem(Table.FieldAsString(0)+' - ' +Table.FieldAsString(1)+' - ' +Table.FieldAsString(2),lb_1); Table.Next; end; Table.Free; finally database.Free; end; end; |
Ohne Zeile 9 und ohne Passwort in der DB funktioniert das Teil sogar - aber ich MUSS die DB verschlüsselt weitergeben, sonst ist es witzlos!!
Und ich habe trotz viel Rumprobiererei und Sucherei im Netz keine Lösung gefunden!
Frage: Wie kann ich einer verschlüsselten SQLite-DB ein PWD zum entschlüsseln übergeben?
PS1: ich hab mal 'versucht' statt ExecSQL den Befehl sqlite3_exec(...) zu benutzen, sogar nach Anleitung.
Da ist mir das System ja total abgedreht!
Die angezeigten Fehlermeldungen und meine Reaktionen darauf, würden hier leider auskommentiert werden! War jedenfalls stinksauer!!!
PS2: kennt sich jemand mit Ultralite von Sybase aus, eventuell sogar mit dem Lizenzmodell? Wäre zumindest eine Alternative!
PS3: Wenn es natürlich eine andere kostenfreie Alternative zum Wrapper von T.Anderson gibt die sich unkompliziert einbinden läßt und einfacher handhabbar ist, wäre ich natürlich für einen solchen Vorschlag auch nicht sauer!