Подтвердить что ты не робот

Получить список таблиц из конкретной базы данных на сервере С#

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

4b9b3361

Ответ 1

System.Data.SqlClient имеет то, что вам нужно без формального запроса в sys.Tables(хотя это то, что он использует в фоновом режиме). Используйте метод GetSchema() для объекта SqlConnection и укажите, что вы хотите "Таблицы", и он отправит вам объект DataTable назад с строкой для каждой таблицы. Он отправляет обратно имя базы данных, имя схемы таблицы, имя таблицы и тип таблицы в каждой строке (в этом столбце). Код будет выглядеть так:

public static List<string> GetTables(string connectionString)
{
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        DataTable schema = connection.GetSchema("Tables");
        List<string> TableNames = new List<string>();
        foreach (DataRow row in schema.Rows)
        {
            TableNames.Add(row[2].ToString());
        }
        return TableNames;
    }
}

Ответ 2

Для SQL Server 2005 и выше:

using (SqlConnection connection = new SqlConnection(@"Data Source=(local);Integrated Security=True;Initial Catalog=DB_Name;")) {
    connection.Open();

    using (SqlCommand command = connection.CreateCommand()) {
        command.CommandText =
            @"SELECT s.name, o.name
            FROM sys.objects o WITH(NOLOCK)
            JOIN sys.schemas s WITH(NOLOCK)
            ON o.schema_id = s.schema_id
            WHERE o.is_ms_shipped = 0 AND RTRIM(o.type) = 'U'
            ORDER BY s.name ASC, o.name ASC";

        using (SqlDataReader reader = command.ExecuteReader()) {
            while (reader.Read()) {
                string schemaName = reader.GetString(0);
                string tableName = reader.GetString(1);

                // your code goes here...
            }
        }
    }
}

Ответ 3

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

SELECT  Name from Sysobjects where xtype = 'u' 

этот запрос вернет все пользовательские таблицы в DataBase

Ответ 4

Я думаю, что этот SQL должен вернуть таблицу, содержащую tablesNames в вашей БД:

SELECT * FROM information_schema.tables

Ответ 5

это мое решение:

    public void opencon()
    {
        if (conn == null)
        {
            conn = new SqlConnection(@"Your connection");
        }
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
        }
    }
    public void Closecon()
    {
        if ((conn != null) && (conn.State == ConnectionState.Open))
        {
            conn.Close();
        }
    }
   public void GetTables(ComboBox cb)
    {
            chuoiketnoi();
            DataTable schema = conn.GetSchema("Tables");
            foreach (DataRow row in schema.Rows)
            {
                cb.Items.Add(row[2].ToString());
            }
            dongketnoi();
    }