Page 1 sur 1

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

Publié : ven. 02/oct./2015 19:28
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.

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

Publié : ven. 02/oct./2015 21:18
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.

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

Publié : ven. 02/oct./2015 23:19
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:

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

Publié : sam. 03/oct./2015 0:09
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

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

Publié : sam. 03/oct./2015 7:43
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.

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

Publié : sam. 03/oct./2015 9:26
par microdevweb
Merci falsam pour ce partage, aujourd’hui encore j'aurais appris quelque chose vraiment intéressant.