Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Java -> JDBC -> ODBC -> Access. Запрос не возвраща


Автор: Shovkoviy 7.11.2007, 19:25
Здравствуйте.

Приложение работает с базой MS Access. ( Java -> JDBC -> ODBC -> MS Access )
Необходимо получить описание таблиц и полей базы Access.
Есть код:
Код

String[] supportedTableTypes = new String[2];
int l=0;
supportedTableTypes[l++] = "TABLE";
supportedTableTypes[l++] = "VIEW";
try 
{            
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");            
      Connection con = DriverManager.getConnection("jdbc:odbc:test");
      DatabaseMetaData meta = con.getMetaData();            
      ResultSet rs = meta.getTables(null, null, "%", supportedTableTypes);    
      while (rs.next())
      {                
          String tCatalog = rs.getString(1);       // TABLE_CAT
          String tSchema = rs.getString(2);        // TABLE_SCHEM
          String tName = rs.getString(3);          // TABLE_NAME
          String tType = rs.getString(4);          // TABLE_TYPE
          String tDescription = rs.getString(5);   // REMARKS      
     }
} 
catch (Exception e) {...}

Переменная tDescription - не возвращает описание таблицы она всегда = NULL.
Этот способ не подходит.

Подскажите, пожалуйста, каким другим способом можно достать описание таблиц и описание колонок?

Автор: Shovkoviy 7.11.2007, 23:09
Подскажите в какой системной таблице MS Access хранятся: описания таблиц и колонок?

Автор: Akina 7.11.2007, 23:41
Описания таблиц хранятся в таблице MSysObjects.
Описания структуры таблиц в таблицах не хранятся.

Указанную информацию получают не прямым обращением к объектам БД, а парсингом коллекции TableDefs (список таблиц) и объекта TableDef (структура определенной таблицы).

Автор: LSD 9.11.2007, 12:37
Ты хочешь сказать, что с помощью только селектов и вызова процедур получить информацию о БД в Access нельзя?

Автор: bopoha 9.11.2007, 13:14
LSD, 
Синтаксис sql не полный (в плане DTD) и не содержит SHOW FIELDS. У меня получалось вытянуть информацию из mdb еще при помощи ADO, опять же не запросами.

Автор: Akina 9.11.2007, 13:26
Цитата(LSD @  9.11.2007,  13:37 Найти цитируемый пост)
Ты хочешь сказать, что с помощью только селектов и вызова процедур получить информацию о БД в Access нельзя?

Список таблиц/запросов - можно. See above. Но не рекомендуется. See там же.
Структуру в основе своей можно получить обработкой результата выборки на клиенте (разобрать структуру рекордсета). Только запросами и процедурами - нельзя.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)