2013-05-29 5 views
-1

Учитывая имя таблицы, как узнать имена столбцов с помощью JDBC? Я знаю, что это что-то, использующее DatabaseMetaData, примеры приветствуются!Как узнать имена столбцов с помощью JDBC?

Комплектующие вопрос:

Я использую HSQLDB и создания таблицы, когда я запустить сервер и, кажется, что databasemetada не в состоянии прочитать имена столбцов.

String tableName = "cities"; 
DatabaseMetaData metaData = connection.getMetaData(); 
ResultSet resultSet = metaData.getColumns(null, null, tableName, null); 
while(resultSet.next()){ 
System.out.println(resultSet.getString("COLUMN_NAME")); 
} 

Объект resultSet.next() приходит пустой.

+0

http://www.java2s.com/Code/Java/Database-SQL-JDBC/UseDatabaseMetaDatatogettablecolumnnames.htm – Jarandinor

ответ

0

Вы правы, вы будете использовать объект DatabaseMetaData, а затем использовать его метод getColumns(). Например:

DatabaseMetaData dbm = connection.getMetaData(); 
ResultSet columns = meta.getColumns(null, "Schema Name", "Table Name", null); 

Обратите внимание, что параметры середины два указывают, какая схема и какая таблица вам нужны столбцы соответственно. (Если вы передаете нуль для этих параметров, ваш ResultSet будет включать в себя все столбцы всех таблиц во всех схемах на базе данных

0
  1. выполнить запрос, получить ResultSet RS Object
  2. получить ResultSetMetaData объекта:. ResultSetMetaData rsd = rs.getMetaData()
  3. получить количество столбцов:

    int columnCount = rsd.getColumnCount(); 
    for(int i = 1; i <= columnCount; i++) { 
        System.out.println(rss.getColumnName(i)); 
    } 
    
2

Вы можете попробовать верхнее имя случая таблицы:

String tableName = "CITIES"; 
+1

Причиной этого может работать в том, что вы должны использовать шаблон имя_таблицы, как она хранится в базы данных, например, для регистрозависимых имен столбцов, которые хранятся в верхнем регистре, вам необходимо запросить их в верхнем регистре. [Javadoc говорит] (http://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html#getColumns (java.lang.String,% 20java.lang.String,% 20java. lang.String,% 20java.lang.String)): "_a имя шаблона таблицы, должно соответствовать имени таблицы, поскольку оно хранится в базе данных_" –

Смежные вопросы