Site icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Nouveau pilote FireDAC pour SQLite SEE

fire dac logo

Embarcadero a mis à disposition un nouveau pilote FireDAC pour la base de données SQLite Encryption Extension (SEE). Le téléchargement est dans GetIt et voici quelques détails derrière cette décision.


RAD Studio 11 Alexandria, comme les versions précédentes, est livré avec un pilote FireDAC pour la base de données SQLite offrant deux approches différentes pour la livraison. Une option est la liaison statique, c’est-à-dire la compilation de SQLite dans le binaire de votre application, en liant le code compilé. La deuxième option est la liaison dynamique, c’est-à-dire l’utilisation d’une DLL SQLite externe. Les deux alternatives et leurs configurations pour différentes plates-formes sont décrites en détail à l’adresse :

https://docwiki.embarcadero.com/RADStudio/Sydney/en/Connect_to_SQLite_database_(FireDAC)

Cryptage FireDAC SQLite

La version de liaison statique du pilote FireDAC SQLite offre une prise en charge du chiffrement de la base de données, en utilisant un mécanisme de hook de base de données (SQLITE_HAS_CODEC) qui a maintenant été  supprimé  des dernières versions de SQLite par l’équipe de développement de la base de données. Pour cette raison, FireDAC prend toujours en charge le cryptage SQLite sur la dernière version de SQLite avec la « fonctionnalité ». Si vous voulez la dernière version de SQLite et que vous n’avez pas besoin de cryptage, vous pouvez utiliser la version DLL.

À l’avenir, le plan consiste à déprécier le chiffrement FireDAC SQLite ou au moins à le fournir en tant qu’option héritée, et à passer à la dernière version de SQLite également pour la version compilée de manière statique. Notez également que si vous passez du pilote FireDAC SQLite Encryption au pilote FireDAC SQLite Encryption Extension (SEE), vous vous retrouverez avec une implémentation de cryptage différente : pour cette raison, les fichiers de base de données SQLite ne seront pas compatibles.

Extension de chiffrement SQLite (SEE)

La voie à suivre avec SQLite Encryption par Hwaci (la société derrière SQLite) est de recommander l’utilisation de SQLite Encryption Extension (SEE), une version payante de SQLite. Vous pouvez en savoir plus sur cette base de données sur ces liens :

Étant donné que certains clients ont demandé à prendre en charge SQLite EE, Embarcadero a créé un pilote FireDAC spécifique. Notez que le contrat de licence indique que vous devez utiliser les liens statiques (mais, comme je ne suis pas un avocat, reportez-vous à la licence liée ci-dessus pour plus de détails). Aucun tiers comme Embarcadero n’est autorisé à distribuer la source de la bibliothèque ou le code binaire compilé. Ainsi, ce qu’Embarcadero fournit aux développeurs est le code source du nouveau pilote FireDAC, ainsi que des scripts basés sur C++Builder pour compiler la bibliothèque. Vous devrez construire et lier les deux éléments (le code de la bibliothèque et l’unité Delphi) ensemble sur votre système de développement — et cela peut nécessiter de posséder le RAD Studio complet, car vous devez compiler à la fois le code C++ et Delphi.

Considérez InterBase ToGo comme une alternative

Avant d’en venir au téléchargement et au côté pratique, notez que, en fonction de vos plates-formes cibles et d’autres exigences, vous pouvez envisager d’utiliser  InterBase ToGo  et sa prise en charge du cryptage de base de données comme alternative à SQLite EE – le modèle de prix est un peu différent, ce qui rend il est difficile de comparer directement, mais je suis certain que l’équipe de vente d’Embarcadero peut vous aider à comprendre.

Télécharger le pilote GetIt

Comme mentionné, le téléchargement est disponible dans un nouveau package GetIt spécifique pour les clients disposant d’un abonnement de mise à jour actif:

Embarcadero rendra le téléchargement disponible également sur le portail clients sous peu. Ci-dessous, j’ai joint le read me de ce package GetIt avec des informations supplémentaires.

Fichier Lisez-moi du pilote FireDAC SQLite SEE

Voici le texte complet du fichier readme dans le package :

Classes d’encapsulation d’API statiques FireDAC SQLite SEE, Copyright 2021 Embarcadero Technologies. Tous les droits sont réservés.
L’utilisation est soumise au CLUF de RAD Studio 11, voir https://www.embarcadero.com/products/rad-studio/rad-studio-eula

SQLite Encryption Extension (SEE) est un produit de Hipp, Wyrick & Company, Inc. (Hwaci) et il est soumis à
la licence disponible sur https://www.hwaci.com/sw/sqlite/license-see.html

=== Liaison statique
C’est une méthode recommandée pour utiliser SQLite SEE avec votre application. Utilisez la nouvelle unité FireDAC.Phys.SQLiteWrapper.SEEStat.pas.
Il permet une liaison statique de sqlite3 SEE à une application. Cette unité est fournie aux clients uniquement sous forme de fichier PAS, car
pour produire DCU / etc, nous avons besoin de sqlite3.obj, qui est soumis à la restriction de licence SQLite SEE.

Utilisation :
* Définir FDPhysSQLiteDriverLink.Linkage=slSEEStatic. Cela ajoutera automatiquement FireDAC.Phys.SQLiteWrapper.SEEStat à la clause « uses »
* … ou inclura FireDAC.Phys.SQLiteWrapper.SEEStat au lieu de FireDAC.Phys.SQLiteWrapper.Stat dans la clause uses de l’application
* Make FireDAC.Phys.SQLiteWrapper.SEEStat. pas accessible au compilateur
* Compilez sqlite3 SEE et produisez sqlite3_x86.obj / sqlite3_x64.obj. Voir la section « Recompilation de SQLite SEE » ci-dessous
* Mettez sqlite3_x86.obj / sqlite3_x64.obj dans le dossier avec FireDAC.Phys.SQLiteWrapper.SEEStat.pas

=== Lien dynamique
Ceci est soumis à des restrictions de redistribution (voir licence Hwaci)

Utilisation:
* Set FDPhysSQLiteDriverLink.Linkage = slDynamic
* Set FDPhysSQLiteDriverLink.SEEKey = ‘xxx’, où ‘xxx’ est de voir la clé d’activation
Vous pouvez lire plus de détails dans le fichier de distribution SEE « de wwwreadme.wiki », chapitre « 5.0 C Interface »
* Fournir sqlite3.dll VOIR la version et la rendre accessible à l’application FireDAC

=== Ce qui fonctionne, ce qui ne
FireDAC cryptage SQLite (FSE), qui supporte des fonctions SQLite SEE ne supporte pas:
* quand mot de passe incorrect est spécifié, retourne FSE « mot de passe incorrect », retourne toujours voir « fichier n’est pas une base de données ”
* FSE peut renvoyer l’algorithme de cryptage actuel, SEE ne peut pas
* la liste des valeurs possibles pour le paramètre de définition de connexion FireDAC « Encrypt » a des valeurs prises en charge par FSE, pas celles de SEE

Notez que les bases de données existantes construites avec le cryptage FireDAC SQLite ne sont pas compatibles avec les bases de données SQLite SEE.
Lorsque vous construirez votre application, il sera bon d’obtenir d’abord les rapports d’environnement FireDAC, pour être sûr que « le bon SQLite » est utilisé.

=== Recompilation de SQLite VOIR
Utilisez le sqlite_compile.bat fourni pour produire sqlite3_x86.obj / sqlite3_x64.obj. Avant d’exécuter sqlite_compile.bat, mettez-le à jour et définissez ces variables sur vos valeurs réelles :
* BDS – dossier d’installation de RAD Studio
* SQLITE_SRC – chemin d’accès au fichier source sqlite

Quitter la version mobile