Поиск некоторых примеров С#, которые могут извлекать имена таблиц из определенной базы данных на сервере. У меня уже есть допустимая строка соединения, просто ищу правильный способ добавления имен каждой таблицы в список для последующего поиска и манипуляции.
Получить список таблиц из конкретной базы данных на сервере С#
Ответ 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();
}