2017-02-23 107 views
0

Я использую эту строку подключения для подключения к SQL ServerКак заполнить TreeView из SQL Server динамически, чтобы получить все имена таблиц и столбцов

Я пытаюсь заполнить узлы ... но я не могу для этого.

Я могу получить только имена таблиц, но не дочерние узлы (т.е. имена столбцов)

connetionString = "Data Source=" + textBox1.Text + ";Initial Catalog=" + comboBox1.Text + ";User ID=" + textBox2.Text + ";Password=" + textBox3.Text; 

sql = "SELECT * FROM [sys].[tables]"; 

connection = new SqlConnection(connetionString); 

TreeView mytree = new TreeView(); 

try 
{ 
    connection.Open(); 
    command = new SqlCommand(sql, connection); 
    adapter.SelectCommand = command; 
    adapter.Fill(ds, "SQL Temp Table"); 
    adapter.Dispose(); 
    command.Dispose(); 
    connection.Close(); 

    treeView1.Nodes.Clear(); 
    treeView1.Sort(); 

    for (i = 0; i <= ds.Tables[0].Rows.Count - 1; i++) 
    { 
     treeView1.Nodes.Add(ds.Tables[0].Rows[i].ItemArray[0].ToString()); 

     for (j = 0; j <= ds.Tables[0].Columns.Count - 1; j++) 
     { 
      treeView1.Nodes.Add(ds.Tables[0].Columns[j].ToString()); 
     } 
    } 
}  
+0

Чтобы получить имена столбцов, вам нужно выбрать из 'sys.columns'; 'object_id' в' sys.columns' соответствует 'object_id' в' sys.tables' –

+0

Спасибо за ваш ответ. позвольте мне попробовать @marc_s ... –

ответ

0

Я думаю, что этот вопрос может помочь вам

выберите TABLE_NAME из INFORMATION_SCHEMA.TABLES выберите COLUMN_NAME из INFORMATION_SCHEMA .COLUMNS где TABLE_NAME = 'Таблица1' enter image description here

+0

Привет, pavan, Спасибо за ответ. Я уже использую этот запрос, где я получаю таблицы и столбцы таблицы. но мне нужно заполнить его в treeview. Как достичь этого? SELECT T. [name] AS [имя_ таблицы], AC. [Name] AS [имя_столбца] FROM sys. [Tables] AS T INNER JOIN sys. [All_columns] AC ON T. [object_id] = AC. [Object_id] –