Requête nom des tables d'une DB

Résolu
Signaler
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007
-
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007
-
Bonjour,

Je fais un logiciel sous visual basic2005, qui doit lire une base de donnée (non connue) et en ressortir les noms des tables pour les exploiter. Je passe par un driver ODBC. Mais impossible de trouver la requête du genre "SHOW TABLE" qui me permettrait d'obtenir les noms des tables.

Quelqu'un aurait la solution?

Voici le bout de code que j'utilise mais qui ne fonctionne pas du tout:
        Dim connection As New OdbcConnection("DSN=Base1")
        Dim command As New OdbcCommand
        Dim reader As OdbcDataReader
        connection.Open()

        command.CommandText = "SHOW TABLE"
        command.Connection = connection
        reader = command.ExecuteReader()

        MessageBox.Show(reader.Read)

        reader.Close()

8 réponses

Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007

Ayé!!

J'ai trouvé comment faire. Grace à un code un peu similaire en vb6 de Renfield

Voici un programme test qui énumére tous les noms de table de la DB Si quelqu'un d'autre est interressé:

 Dim connection As New OdbcConnection("DSN=Base1")
        Dim command As New OdbcCommand
        Dim var As DataTable
       connection.Open()
        var = connection.GetSchema("Tables")

        For Each element2 As DataRow In var.Rows
            MessageBox.Show(element2.Item(2))
        Next
        connection.Close()
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
faire un OpenSchema

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007

Ok
J'ai essayé ca:
Dim connection As New OdbcConnection("DSN=Base1")
        Dim command As New OdbcCommand
     
        connection.Open()
        MessageBox.Show(connection.GetSchema().TableName)

Mais ca me sort "MetaDataCollections" ?? ca s'exploite comment?
J'ai pas trouvé le OpenSchema...
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
T'es obliger de passer par une requete car moi je fais ca et ca fonctionne tres bien,

Dim bdd As New ADOX.Catalog
Dim Tableau As ADOX.Table

Set bdd.ActiveConnection = acn   'Suivant ta connexion
i = 0
For Each Tableau In bdd.Tables
            Liste_des_tables.AddItem Tableau.Name, i
            i = i + 1
Next
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
C'est du VBA mais il y a certainement un equivalent proche pour ce que tu cherche
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007

Merci bien pour ton aide.
Mais le vba s'adapte mal sur vb2005.
Je n'ai pas trouvé d'équivallent à "Dim Tableau As ADOX.Table"
Je pense que l'idée de "connection.GetSchema()" est pas mal mais je ne sais pas l'exploiter. Je l'ai tourné dans tout les sens, à part "MetaDataCollections" c'est tout ce que j'obtient...
Messages postés
345
Date d'inscription
jeudi 15 février 2007
Statut
Membre
Dernière intervention
24 avril 2010

voici la requete sql je suis débbutant en vb
select table_name from user_catalog;
Messages postés
5
Date d'inscription
mardi 13 mars 2007
Statut
Membre
Dernière intervention
3 avril 2007

Heu mimosa803 es tu sur de ta requete? Je vois pas trop comment on peut connaitre tous les noms de table de la DB??
Ton table_name devient un tableau contenant les différents nom de table?

Sinon Renfield peux tu m'en dire plus sur "OpenSchema" ou "GetSchema" ? Je suis surement pas loin mais impossible d'y aboutir...