Ich verwende eine SQLite Datenbank.
Das "Backend" (Windows
VCL) pflegt diese, die iOS-App (FMX mobile) (iPad iOS7) liest diese.
Die *.sdb für die App wird beim deployen mitverteilt und später via
FTP aktualisiert.
Alles hat im Prinzip schon funktioniert.
Jetzt habe ich die *.sdb verschlüsselt, im Backend unter Windows:
Delphi-Quellcode:
FDSQLiteSecurity1.Database := FDConnection1.Params.Values['Database'];
FDSQLiteSecurity1.Password := constCryptDatabasePassword;
FDSQLiteSecurity1.SetPassword;
Im Backend alles schön, das Öffnen geht danach wie folgt:
Delphi-Quellcode:
function openDb(cPath :
string;
db : TFDConnection) : boolean;
begin
if cPath <> '
'
then begin
db.Params.Values['
Database'] := cPath;
end;
db.Params.Values['
LockingMode'] := '
normal';
db.Params.Values['
Password'] := constCryptDatabasePassword;
// ohne diese Zeile hatte alles funktioniert...
db.Connected := true;
...
result := true;
end;
Im Backend geht das auch wunderbar.
ABER in der App kommt die Fehlermeldung
"...file is encrypted or is not a database"
Als Gegenprobe habe ich die PW-Konstante geändert und bekomme dann im Backend "...invalid password is specified or
db is corrupted".
In der App wie oben.
(D.h. in der App wird das PW
nicht falsch interpretiert (könnte ja sein, das iOS automatisch ein "aesXYZ-" davor setzt o.ä.) - denn dann käme ja auch in der App diese Fehlermeldung, sondern einfach nicht beachtet)
Der obige Code zum Öffnen wird gleichermassen von der App und vom Backend benutzt.
(Ich hab also keinen Schreibfehler gemacht)
Es ist, als ob die SQLite-Bibliothek (sagt man unter iOS so?) sich gar nicht für den Parameter "Password" interessieren würde... ("password" mit kleinem "p" hab ich auch probiert)
Hat jemand eine Idee?
PS: in der Doku
http://docwiki.embarcadero.com/RADSt...te_mit_FireDAC liest sich das für mich so, als ob "Password" unter iOS auch funzen sollte...