Bonjour,
Voilà avec une connection OleDbConnection classique j'arrive à récupérer une DataTable qui représente la liste des tables d'une base de données quelconque avec une commande du type :
dbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { db.Catalogue, db.Schema, null, "TABLE" });
J'aimerais trouver l'équivalent en utilisant les classes factories mais je n'y arrive pas. Quelqu'un à-t-il une idée ?
Ce que je fais je créé un provider factory
DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.SqlClient");
Ensuite je créé ma connection avec ma chaine de connection j'obtiens donc une DbConnection en faisant par exemple :
1 2 3
| DbConnection dbConnection = factory.CreateConnection();
dbConnection.ConnectionString = "Data Source=AUCD0080\\SQLEXPRESS;Initial Catalog=AdventureWorks;Integrated Security=True";
dbConnection.Open(); |
Ensuite je créé un DbDataAdapter pour essayer de trouver les tables de la base avec la commande "SELECT * FROM INFORMATION_SCHEMA.TABLES" :
1 2
| DbDataAdapter adapter = factory.CreateDataAdapter();
adapter.SelectCommand = CreateCommand("SELECT * FROM INFORMATION_SCHEMA.TABLES"); |
Je rempli un DataSet
1 2 3
| DataSet ds = new DataSet();
adapter.Fill(ds);
adapter.SelectCommand.Connection.Close(); |
Je parcoure enfin la liste des tables dans le DataSet via la collection Tables mais bien sur comme vous vous en doutiez je n'ai pas la liste des tables de la base alors comment faire pour avoir l'équivalent de la fonction GetOleDbSchemaTable en utilisant les classe factories ?
Merci d'avance.
Sirile
Partager