Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как прочитать список таблиц БД?  (Прочитано 14722 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DM
Гость
« : 08-12-2004 14:23 » 

Может кто подскажет, как прочитать список таблиц БД. Нужно сделать это (если возможно) в среде .Net . Можно ли с помощью датаадаптера заполнить DataSet всеми таблицами БД? (Без данных, конечно, прочитать только структуру). Выбирать напрямую из системной таблицы нельзя, так как не хочется здесь делать привязку к СУБД.
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 09-12-2004 06:03 » 

DM, попробуй так

SELECT * FROM INFORMATION_SCHEMA.TABLES ORDER BY TABLE_NAME
Записан

I Have Nine Lives You Have One Only
THINK!
DM
Гость
« Ответ #2 : 09-12-2004 12:57 » 

HandKot,  это не проходит для некоторых СУБД - например, Ingres. Там просто нет такого понятия как INFORMATION_SCHEMA. Данные селект, естесственно, не срабатывает. A Visual Studio тем не менее в Server Explorer спокойно показывает список всех таблиц и их структуру (используется ODBC источник данных).  Хотелось бы понять, как это делается?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 09-12-2004 13:41 » 

Ну тогда можно попробовать

OpenSchema Method
The OpenSchema method on a Connection object obtains database schema information from the provider.

recordset = connection.OpenSchema ( QueryType, Criteria, SchemaID )
 
остальное в МСДН
Записан

I Have Nine Lives You Have One Only
THINK!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 10-12-2004 06:17 » 

А БД какая?  Я если честно не знаю ниверсального метода. Но в бошенстве БД есть стркутура описывающая все объекты   Как например в MSSQLSErver есть база данных master в которой есть системные таблички содержащие информацию о все объектах БД  в плоть до последнего констрейта...
Записан

Да да нет нет все остальное от лукавого.
DM
Гость
« Ответ #5 : 10-12-2004 13:32 » 

HandKot, это интересно, попробую. Спасибо.
PSD, не хотелось бы привязываться к БД ... Visual Studio, повторяюсь, как-то высвечивает список таблиц и их структуру, хотя в случае ODBC источника данных скорее всего ничего не знает о СУБД.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 10-12-2004 13:39 » 

Он пользуется ОleDB, там в чистом виде есть весь набор описателей, и можно пройти по списку всех объектов ДБ, но делать это ручками весьма напряжно....

Ты кстати какой библиотекой доступа пользуешся?
Записан

Да да нет нет все остальное от лукавого.
DM
Гость
« Ответ #7 : 10-12-2004 14:21 » 

Microsoft OLE DB Provider for ODBC Drivers
Записан
DM
Гость
« Ответ #8 : 10-12-2004 14:53 » 

Действительно, тут надо действовать через OleDB
Вот что я нашел в MSDN:
Код:
 The following sample returns a list of tables in a database.
[C#]
public DataTable GetTables(OleDbConnection conn)
{
  conn.Open();
  DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
                                                   new object[] {null, null, null, "TABLE"});
  conn.Close();
  return schemaTable;
}
Пока на практике не пробовал - нет времени
« Последнее редактирование: 03-12-2007 16:31 от Алексей1153++ » Записан
DM
Гость
« Ответ #9 : 10-12-2004 14:56 » 

Чего так шелек стал тормозить - иногда даже страницы не грузятся ?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines