Как получить имена всех столбцов из таблицы Oracle - PullRequest
1 голос
/ 14 ноября 2011

Как я могу получить имена всех столбцов из таблицы Oracle, используя Java?Есть ли способ получить их из объекта DatabaseMetaData?

DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
...

Я знаю, что могу получить их, используя оператор выбора:

Select COLUMN_NAME from user_tab_columns where table_name='MYTABLE'

Если возможно получить их из объекта DatabaseMetaDataВ чем разница между этими двумя методами?

РЕДАКТИРОВАТЬ: размещение рабочего кода (спасибо за ваши ответы)

public ArrayList<String> getAllFields(String tableName) {
    ArrayList<String> allFields = new ArrayList<String>();
    try {
        DatabaseMetaData myDatabaseMetaData = myConnection.getMetaData();
        ResultSet columnsResultSet = myDatabaseMetaData.getColumns(null, null, tableName, null);
        while (columnsResultSet.next()) { allFields.add(columnsResultSet.getString("COLUMN_NAME")); }
    } catch (SQLException ex) {
        Exceptions.printStackTrace(ex);
    }
    return allFields;
}

Ответы [ 3 ]

6 голосов
/ 14 ноября 2011

Вы ищете DatabaseMetaData.getColumns ()

Ну, разница между вашим SQL и API JDBC в том, что вызов API должен работать на всех СУБД, тогда как SQLбудет работать только на Oracle.

2 голосов
/ 14 ноября 2011

DatabaseMetaData # getColumns (строка, строка, строка, строка)

Ваш прямой вызов SQL будет работать только в Oracle, в то время как метод DatabaseMetaData должен быть независимым от базы данных.

1 голос
/ 14 ноября 2011

DatabaseMetaData - это интерфейс, поэтому все зависит от реализации драйвера JDBC. Будьте уверены, чтобы использовать лучший и последний опубликованный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...