Bonjour à tous,

je suis entrain de développer un générateur de procédure stocké et de requête sql.

Je souhaiterai donc récupérer les infos d'une base de données (Nom de la BD, Nom des tables, champs des tables) le tout dans un treeView, un peu comme l'explorateur d'objet d'SqlServer.

Mais je bloque.

J'arrive a récupérer les info dans un dataGridView :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
            BindingSource bingingSource1 = new BindingSource();
            try
            {
                string dataSource = textBoxDataSource.Text;
                string catalog = textBoxCatalogSql.Text;
                using (SqlConnection cx = new SqlConnection(@"Data Source="+dataSource+";Initial Catalog="+catalog+";Integrated Security=True"))
                {
                    cx.Open();
                    DataTable schema = cx.GetSchema("Columns");
 
                    bingingSource1.DataSource = schema;
                    dataGridView1.DataSource = bingingSource1;
                    cx.Close();
                }
 
            }
            catch (SqlException ex)
            {
                MessageBox.Show(ex.Message, "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
Mais des que je veut insérer les infos dans le treeView, j'obtient des infos générique ( ex: TABLE_CATALOG,TABLE_NAME ...)

J'arrive pas à récupérer les vrais info et surtout les ordonnées de manière hiérarchique.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
                    foreach (DataRow row in schema.Rows)
                    {
                        foreach (DataColumn col in schema.Columns)
                        {
                            TreeNode tn = new TreeNode(col.ColumnName); // J'arrive pas a récuperer le nom de la base
                            tn.Nodes.Add(// je devrai ici, ajouter un noeud, qui listerai les tables de la base.
                            // rajouter encore un noeud qui listerai les champs de chaque table.
                            treeView1.Nodes.Add(tn);
 
                        }
 
                    }
Voici ce que j'obtient :



Merci de votre aide