Bonjour,
Avec Delphi 12, on développe une application qui utilise des bases SQLite. On souhaite crypter ces bases et on évalue les différentes possibilités.
J'ai évalué les composants UniDac qui proposent de crypter/décrypter facilement les bases et maintenant je veux évaluer SQLCipher.
La compilation de SQLCipher étant un peu plus complexeque la compilation de SQLite, j'ai opté pour le téléchargement d'une DLL SqlCipher 32 bits.
Dans mon projet Delphi, j'ai les composants TFDConnection et TFDPhysSQLiteDriverLink de FireDac que je paramètre pour l'ouverture de ma base _FileName:
Lors de l'exécution j'ai une erreur qui indique un problème de présence de la DLL et/ou un problème d'architecture (x64/x86):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 with FDConnection do begin // Chemin DLL SQLite spécifique var CustomSQLiteDllPath := 'C:\dev\Projet UniDac\sqlite3_cipher_86.dll'; FDPhysSQLiteDriverLink1.EngineLinkage := slDynamic; FDPhysSQLiteDriverLink1.VendorLib:= CustomSQLiteDllPath ; with Params do begin Clear ; Add('DriverID=Sqlite') ; Add('Database='+_FileName); Add('EnableBCD=False') ; Add('StringFormat=Unicode') ; Add('LockingMode=Normal'); Add('Synchronous=Normal'); Add('BlobSize=-1'); Add('CommitRetain=False'); Add('WaitOnLocks=True'); Add('Trim Char=False'); end; end;
--> Je pensais que l'application ne trouvait pas la DLL. Pour test, j'ai supprimé la DLL de mon répertoire et à l'exécution j'ai le message classique qui indique que la DLL n'est pas présente:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 classe d'exception EFDException avec le message '[FireDAC][Phys][SQLite]-314. Impossible de charger la bibliothèque du fournisseur [C:\dev\Projet UniDac\sqlite3_cipher_86.dll]. Le module spécifié est introuvable Conseil : vérifiez qu'il est dans le PATH ou dans les répertoires EXE de l'application et qu'il a un nombre de bits de x86.'.
La DLL téléchargée est 32bits.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Le projet Project1.exe a déclenché la classe d'exception EFOpenError avec le message 'Impossible d'ouvrir le fichier "C:\dev\Projet UniDac\sqlite3_cipher_86.dll". Le fichier spécifié est introuvable'.
Je ne comprends pas cette erreur... Dois-je paramétrer autrement TFDConnection pour que cela fonctionne ?
Merci pour vos conseils.





que la compilation de SQLite, j'ai opté pour le téléchargement d'une DLL SqlCipher 32 bits.
Répondre avec citation





Partager