Comment trouver le nom d'une table d'une base de données

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Comment trouver le nom d'une table d'une base de données

Message par Micoute »

Bonsoir à tous,

j'aimerais connaître comment trouver le nom du table d'une base données ouverte à l'aide d'un OpenFileRequester.

Je vous remercie tous grandement pour votre aide qui me sera précieuse.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment trouver le nom d'une table d'une base de données

Message par falsam »

Micoute a écrit :j'aimerais connaître comment trouver le nom du table d'une base données ouverte à l'aide d'un OpenFileRequester.
On va dire que la question est mal formulée.

OpenFileRequester() ne permet pas d'ouvrir une base de données. Seule la commande OpenDatabase() permet d'ouvrir une base de données.

Je penses que tu as du combiner ces deux fonctionnalités : Si tu utilises OpenFileRequester() ça suppose que tu vas sélectionner une base de données SQLite que tu ouvriras avec la commande OpenDatabase()

Pour répondre enfin à ta question, avec cette méthode tu ne sauras pas quelle est le nom de la table qui a été ouverte.

C'est toi qui va devoir manipuler les commandes SQL pour dire quelle table tu vas utiliser. Exemple :

Code : Tout sélectionner

DatabaseQuery(0, "SELECT * FROM MyTable")
Avec ce simple exemple on sélectionnes tous les enregistrements de MyTable . l'* te permet de sélectionner toutes les colonnes d'un enregistrement.

J’espère que j'ai bien compris ta demande.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment trouver le nom d'une table d'une base de données

Message par microdevweb »

hum, je me demande si la demande de micoute n'est pas lister la base de donnée. Retrouver la lise des tables, des item et leur type. Malheureusement personnellement je n'ai pas la réponse, mais je penses que falsam détiens la réponse puisqu'il l'applique dans Sqlite (très bon logiciel d’ailleurs). Je serais intéressé également par cela. :wink:
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment trouver le nom d'une table d'une base de données

Message par falsam »

Un code qui montre :
- Comment lister les noms des tables d'une base de données.
- Comment lister la structure d'une table.

J'ai crée une base de données en mémoire ainsi que trois tables pour cet exercice.

Code : Tout sélectionner

Enumeration
  #DataBase
EndEnumeration

UseSQLiteDatabase()

Global ReqSql.s

;Création d'une base de donnée en mémoire et de 3 tables 
If OpenDatabase(#DataBase, ":memory:", "", "")
  
  ;Creation de la table département
  ReqSql = "CREATE TABLE departements ("
  ReqSql + "numdep INTEGER," ;Numéro de département
  ReqSql + "nom TEXTE"       ;Libéllé du département 
  ReqSql + ");"
  DatabaseUpdate(#DataBase, ReqSql)       
  
  ;Creation de la table client
  ;l'identification client est une clé automatique autoincrémentée
  ReqSql = "CREATE TABLE clients ("
  ReqSql + "idcli INTEGER PRIMARY KEY," ;Identifiant client automatiquement incrémenté
  ReqSql + "nom TEXT,"                  ;Nom
  ReqSql + "numdep INTEGER,"            ;Numéro de département 
  ReqSql + "actif INTEGER DEFAULT 1"    ;Numéro de département 
  ReqSql + ");"
  DatabaseUpdate(#DataBase, ReqSql)       
  
  ;Creation de la table chiffre d'affaire
  ReqSql = "CREATE TABLE ca ("
  ReqSql + "idcli INTEGER,"
  ReqSql + "montant INTEGER DEFAULT 0"
  ReqSql + ");"
  DatabaseUpdate(#DataBase, ReqSql)       
  
EndIf


;Liste des tables 
ReqSQL="Select * From sqlite_master order by type Desc, name Asc"

Debug "# Liste des tables de la base de données"
If DatabaseQuery(#Database,ReqSQL)
  While NextDatabaseRow(#Database)
    If GetDatabaseString(#Database,0)="table"
      Debug GetDatabaseString(#Database,1)
    EndIf  
  Wend
EndIf

Debug ""

;Lister les éléments d'une table : Exemple avec la table clients
Table.s = "clients"
ReqSQL="PRAGMA table_info("+Chr(34)+Table+Chr(34)+")"

Debug "# Structure de la table Clients"
If DatabaseQuery(#Database, ReqSQL)
  While NextDatabaseRow(#Database)
    Debug GetDatabaseString(#Database,0) + " - " +  ;cid (Column index)
          GetDatabaseString(#Database,1) + " - " +  ;name (Column name)
          GetDatabaseString(#Database,2) + " - " +  ;type (Column type)
          GetDatabaseString(#Database,3) + " - " +  ;not null (Has a NOT NULL constraint)
          GetDatabaseString(#Database,4) + " - " +  ;dflt_value (Default value)
          GetDatabaseString(#Database,5)            ;pk (Primary Key ; 1 si oui)
  Wend
EndIf
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment trouver le nom d'une table d'une base de données

Message par Micoute »

Merci microdevweb et surtout falsam d'avoir compris ma requête et quand j'ai essayé, ça m'a donné une grande bouffée de satifaction.

En fait, je voudrais faire une application qui me liste la base de donnée ouverte un peu comme SQLite Vision que j'utilise souvent, pour convertir les bases de données, par exemple en JSON ou autres types.

J'ai beaucoup apprécié votre aide et je vous en remercie encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Comment trouver le nom d'une table d'une base de données

Message par microdevweb »

Merci falsam pour ce partage, aujourd’hui encore j'aurais appris quelque chose vraiment intéressant.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Répondre