Requête nom des tables d'une DB

Résolu
cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007 - 2 avril 2007 à 08:39
cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007 - 3 avril 2007 à 14:50
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

cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 14:50
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()
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
2 avril 2007 à 08:45
faire un OpenSchema

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007
2 avril 2007 à 08:57
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...
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 avril 2007 à 10:16
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
2 avril 2007 à 10:17
C'est du VBA mais il y a certainement un equivalent proche pour ce que tu cherche
0
cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007
2 avril 2007 à 10:50
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...
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
2 avril 2007 à 22:15
voici la requete sql je suis débbutant en vb
select table_name from user_catalog;
0
cs_tyboo Messages postés 5 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 3 avril 2007
3 avril 2007 à 09:26
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...
0
Rejoignez-nous