Способы получения информации о таблицах, не зависящие от СУБД

Задача
Вы хотите получить информацию о таблице, не используя собственные запросы MySQL типа SHOW COLUMNS.

Решение
Это возможно не во всех API. Одним из исключений является JDBC, предоставляющий стандартный интерфейс для метаданных таблиц.

Обсуждение
Было показано, как использовать различные API для обработки информации о таблицах, полученной при помощи способов, применяющих специальные запросы SHOW и SELECT. Эти приемы работают только в MySQL. JDBC обеспечивает доступ к информации о таблицах посредством стандартного интерфейса, не ссылающегося на конкретные запросы, который может переноситься в другие СУБД. Вы используете объект соединения для получения объекта метаданных базы данных, затем вызываете метод getColumns() этого объекта для извлечения информации. МетодРассмотрим пример использования функции getColumns() для вывода списка имен столбцов и типов:

DatabaseMetaData md = conn.getMetaData ();
ResultSet rs = md.getColumns (dbName, "", tblName, "%");
int i = 0;
while (rs.next ())
{
i++;
System.out.println ("--- Column " + i + " ---");
System.out.println ("Name: " + rs.getString (4));
System.out.println ("Type: " + rs.getString (6));
}
rs.close ();

Если значением переменной tblName было бы "item", вывод выглядел бы так:

--- Column 1 ---
Name: id
Type: int
--- Column 2 ---Name: name
Type: char
--- Column 3 ---
Name: colors
Type: enum

Четыре аргумента getColumns() – это имена каталога, схемы и таблицы, а также шаблон SQL, которому должны соответствовать выбираемые имена столбцов.


В MySQL эти аргументы таковы:

• Имя каталога – это имя базы данных. Чтобы использовать текущую базу данных, введите пустую строку.

• В MySQL нет понятия «схема», так что аргумент имени схемы к делу не относится и может быть пустой строкой.

• Аргумент имени таблицы – это символьная строка имени таблицы.

• Шаблон имени столбца аналогичен использованию инструкции LIKE в предложении SHOW COLUMNS. В примере используется символ %, означающий совпадение со всеми именами столбцов. Для получения информации об отдельном столбце передайте функции его имя. (Не забывайте экранировать символы % и _ обратным слэшем для буквального соответствия.)

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Вывод списков таблиц и баз данных
Мониторинг сервера MySQL
Определение количества строк, обработанных запросом
Определение наличия или отсутствия результирующего множества
Определение текущего пользователя MySQL