SQLite Quick : Utilisation
vendredi 21 novembre 2003, par Bech ()
Vous pouvez télécharger une version modifiée de SQLite Quick au bas de cette page, en pièce jointe de l’article. Dans l’archive j’ai mis les sources ainsi qu’un paquet pour installer les composants.
La version originale se trouve sur http://www.it77.de/sqlite/sqlite.htm.
SQLite Quick est donc un wrapper de la DLL SQLite pour Delphi. Basé sur TLiteDB, il offre surtout la possibilité de travaillé avec des composants (plus pratique) et de nouvelles fonctions utilisables directement dans le code SQL (Date/Heure et soundex).
Les composants
Après l’installation, un nouvel onglet SQLite fait son apparition parmis les composants de delphi.

Nous avons dans l’ordre :
SL_Database : Le composant base de données,
SL_CallBack_Result : pour récupérer le résultat d’une requête ligne par ligne,
SL_Query : le composant Query (genre dataset).
Utilisation : TSL_Database
Premièrement, plaçez un composant SL_Database sur votre fenêtre :
Indiquez dans sa propriété DataBaseName le chemin d’accès et le nom du fichier SQLite (S’il n’existe pas, il sera créé).
A ce stade vous pouvez déjà vous connecter (ou déconnecter) en changeant la valeur de la propriété Active. Les fonctions Open et Close sont également disponibles.
Le composant Database offre déjà des fonctions utiles pour faire quelques requêtes et parfois obtenir un résultat :
ExecSQL(SQL:PChar) permet d’éxécuter une requête,
GetInteger(aSQL:PChar) éxécuter une requête qui retourne un entier,
GetString(aSQL:AnsiString ;var str:AnsiString) éxécuter une requête qui retourne une chaine,
GetLastRowID retourne l’ID du dernier enregistrement ajouté dans une table (cf doc SQLite).
J’ai rajouté une fonction à ce composant, Reorganize, qui éxécute le code SQL "VACUUM". Cela permet de compacter la base de données, SQLite va créer un fichier temporaire puis recréer le fichier de la base de données. Cela ne fonctionnera que si aucune autre commande SQL n’est active. Elle retourne SQLite_OK (= 0) si tout s’est bien passé.
J’ai également rajouté la fonction Integrity_Check qui permet de demander à SQLite de vérifier la base de données. Cette fonctiion retourne un Boolean.
Gestion des transactions
Le composant permet maintenant l’utilisation des fonctions :
StartTransaction,
Commit,
RollBack.
Autre modification
La possibilité de changer deux infos pragma sur la base :
cache_size,
synchronous.
Cache_size indique le nombre de pages utilisées en mémoire par SQLite comme buffer sur la base, chaque page fait 1,5Ko. La valeur par défaut est 2000.
Synchronous permet d’indiquer la méthode d’enregistrement des modifications. En mode FULL, SQLite va fréquement enregistrer les modifications dans le fichier. En mode NORMAL, l’enregistrement sera moins fréquent. En mode OFF, l’enregistrement ne se fait qu’en fin d’utilisation des données.
La doc de SQLite indique que certaines opérations sont 50 fois plus rapide en mode OFF. Mais avec le risque de tout perdre en cas de plantage de la machine...
Utilisation : TSL_Query
Plaçez un composant SL_Query sur votre Form. Dans sa propriété Database, indiquez le nom du composant base de données. Dans sa propriété SQL, indiquez la requête SQL à utiliser pour obtenir les données. Exemple :
SL_Query1.SQL := 'SELECT * FROM MA_TABLE;';
Maintenant, vous pouvez ouvrir cette table avec la commande :
SL_Query1.Open;
Les fonctions First, Next, Previous et Last sont disponible, ainsi que RowCount et EOF.
Les données sont utilisable via la fonction FieldByName. Cette fonction prend en paramêtre le nom de la colonne (du champ) et retourne un objet de type TSL_Field. Comme le composant table utilise le même objet TSL_Field pour fournir la valeur des champs, ce composant n’est pas Thread Safe. Attention en cas d’utilisation du même composant avec plusieur thread.
A l’aide de l’objet TSL_Field, nous avons droit aux transtypages suivants :
AsString,
AsInteger,
AsFloat,
AsDateTime,
AsBoolean,
AsSingle,
AsDouble,
AsCurrency,
AsDate.
Une fonction IsNull permet de savoir si le champ est vide.
Exemple :
MonCode := SL_Query1.FieldByName('Code').AsInteger;
Ou encore :
MonCode := SL_Query1['Code'].AsSingle;
Nouvelles fonctions
En plus de permettre d’utiliser SQLite, SQLite Quick rajoute de nouvelle fonction SQL pour SQLite utilisable dans vos requêtes :
now() = date courrante,
dow() = jour de la semaine en cours,
dow(x) = jour de la semaine de la date ’x’,
formattime(format,datetime) = formatage de la date, comme FormatDateTime dans delphi,
trunc(x) = valeur entière de x,
frac(x) = partie décimale de x,
ceil(x) = valeur entière supérieure de x,
floor(x) = valeur entière inférieure de x,
pos(string,substring) = retourne la position de ’substring’ dans ’string’,
soundex(s) = calcule et retourne le soundex d’une chaine.
vous pouvez donc faire, par exemple :
SELECT TRUNC(MA_DATE) FROM MA_TABLE;
... pour obtenir la partie entière d’un Date/Time ce qui correspond à la date seule.
A suivre
Ce document n’est pas fini ... Le reste des informations se trouve dans le fichier SQLite_Quick.Pas, à suivre donc ...
Documents joints
-
SQLite Quick (Zip - 144.8 ko)Les composants SQLite Quick