Bonjour,
Je sais tester si une base Sqlite3 existe dans une application Lazarus, mais pour savoir si une table existe dans la base je ne sais pas comment faire.
Je suis sous Linux et Lazarus 1.2.4.
Merci d'avance pour votre aide.
A+
Bonjour,
Je sais tester si une base Sqlite3 existe dans une application Lazarus, mais pour savoir si une table existe dans la base je ne sais pas comment faire.
Je suis sous Linux et Lazarus 1.2.4.
Merci d'avance pour votre aide.
A+
Bonjour,
On doit pouvoir exploiter le retour du SQL suivant :
Si c'est pour créer au besoin la table inexistante, on a la possibilité de faire un :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part PRAGMA table_info(table-name)
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part CREATE TABLE IF NOT EXISTS
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Salut,
Rapido, en interrogeant la table système sqlite_master:
devrait te dépatouiller, cela provient de la FAQ SQLite. Tu obtiens alors 1 ou 0 ligne selon la présence ou l'absence de la table passée en paramètre NAME.
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 SELECT DISTINCT name FROM sqlite_master WHERE type='table' AND NAME =:NAME;
Rem: la présence de table(s) système(s) fait partie de la norme SQL, si je me souviens bien, elles reflètent la structure de la base de données. Leur structure n'est par contre pas normalisée, tout dépend du SGBDR.
@+
![]()
M E N S . A G I T A T . M O L E M
Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal
"La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."
Je viens de faire le test : si la table n'existe pas, PRAGMA table_info(nom-de-la-table) retourne SQLITE_OK (donc pas d'erreur), mais aucune ligne (sinon, une ligne par colonne de la table, pour les décrire).
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Merci pour vos réponses
Mais comment tester la réponse d'une commande SQL,
en complément comment intercepter et exploiter un message d'erreur sous lazarus ?
A+
Quand je parlais de code d'erreur, c'est celui que renvoie chaque fonction de l'API SQLite. Elles sont encapsulées et masquées dans les méthodes des composants d'accès aux BDD. Mais je ne m'en sers pas jusqu'ici... Il suffit probablement d'utiliser un DataSet et de compter les lignes après exécution de la commande ?
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Partager