Envoyé par
polocfa41
Avec une base de données via MySQL, la commande qui permet d'obtenir la liste des tables est SHOW TABLES mais le problème c'est que cette commande ne fonctionne pas avec Interbase.
Cette commande fonctionne sous Interbase et Firebird.
Lancez l'utilitaire ISQL qui est livré avec Interbase ou firebird, connectez vous à votre base
CONNECT 'Serveur:DataBaseAliasOuCheminCompletEtNomDeLaDataBase' USER 'SYSDBA' PASSWORD 'masterkey';
et vous verrez que la commande fonctionne parfaitement comme les autres show d'ailleur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SHOW TABLES;
SHOW TABLE MATABLE;
SHOW INDICES;
SHOW INDEX MONINDEX;
SHOW INDEX MATABLE;
SHOW GENERATORS;
SHOW VIEWS;
SHOW ROLE;
SHOW GRANT;
SHOW TRIGGERS;
SHOW TRIGGER MONTRIGGER;
SHOW PROCEDURES;
SHOW PROCEDURE MAPROCEDURE;
/* Etc (il y en a d'autres) */ |
Envoyé par
polocfa41
De plus j'ai également essayé la commande IBDatabase.GetTableNames(Listbox.Items) mais pas plus convaincant, SQL-View ne connaît pas cette commande.
Oui c'est normal ce n'est pas un ordre SQL mais une ligne de commande Delphi (langage de programmation Pascal Objet), qui utilise les composants IBX (composants d'accès natif à interbase).
C'est donc vos deux outils SQL (ou le moyens utilisé pour se connecter à ces bases) qui n'implétentent pas le show tables pour les bases de données Interbase/Firebird.
Vous avez encore une chance d'y arriver en essayant de regarder dans les tables systemes avec cet ordre SQL :
1 2 3
| select distinct RDB$RELATION_NAME from rdb$RELATION_FIELDS
where RDB$VIEW_CONTEXT is null
and RDB$SYSTEM_FLAG = 0; |
Qui rammène la liste des tables sans doublon et en exluant les vues et tables systemes.
Partager