Получить имена таблиц определенной базы данных, выбранной пользователем из списка. - PullRequest
0 голосов
/ 02 мая 2018

Я работаю в Visual Studio, чтобы получить имена баз данных на SQL-сервере, и я получаю их успешно. Но теперь я хочу заполнить комбинированный список именами таблиц базы данных, выбранной пользователем из другого комбинированного списка. Вот что я пробовал до сих пор, когда я запускаю приложение, поле со списком для имен таблиц заполняется для базы данных, которую я упомянул в запросе. Но это должно зависеть от пользователя, если он выберет какую-либо базу данных из списка, то имена таблиц для этой базы данных должны быть заполнены имена таблиц combobox Поэтому пользователь не должен явно указывать имя базы данных в запросе.

По сути, он должен выбрать имя выбранной базы данных из выпадающего списка и заполнить другой выпадающий список соответствующими именами таблиц.

using (SqlCommand com = new SqlCommand("SELECT TABLE_NAME FROM 
RegistrationFrom.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'", 
con))
{
                using (SqlDataReader reader = com.ExecuteReader())
                {
                    //comboBox1.Items.Clear();
                    while (reader.Read())
                    {
                        comboBox1.Items.Add((string)reader["TABLE_NAME"]);
                    }
                }
            }

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Для получения списка таблиц вы можете использовать следующий запрос:

SELECT * FROM [master].[sys].[databases]

Вам потребуется отфильтровать, чтобы удалить системные базы данных , вероятно, исключая owner_sid 0x01 - ваш лучший вариант. Теперь, когда у вас есть этот дамп в свой комбобокс. Подключитесь к изменению выбора в этом комбинированном списке и запустите текущий запрос, выдав список в комбинированный список 2.

0 голосов
/ 02 мая 2018

Вам необходимо заменить RegistrationFrom на значение вашего первого комбинированного списка.

System.Text.StringBuilder myQuery = new System.Text.StringBuilder();
myQuery.AppendFormat("SELECT TABLE_NAME FROM {0}.INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'", valueOfCombobox);

using (SqlCommand com = new SqlCommand(myQuery.ToString(), con))
{
    using (SqlDataReader reader = com.ExecuteReader())
    {
        //comboBox1.Items.Clear();
        while (reader.Read())
        {
            comboBox1.Items.Add((string)reader["TABLE_NAME"]);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...