База данных метаданных, получающих данные столбца - PullRequest
0 голосов
/ 11 ноября 2010

Я использую базы метаданных, чтобы найти размер столбца. Но getColumns (null, null, "table_name", null) возвращает пустой набор результатов. Я проверил таблицу, запросив ее, и таблица присутствует. Где ошибка? Заранее спасибо!

Обновление:

Connection connection = getConnection(); //getting the connection -   
Statement st = connection.createStatement();  
ResultSet rs = st.executeQuery("select * from table_name");  
while (rs.next()) { 
   System.out.println(rs.getString("column_name")); //The values get printed 
}
ResultSet rsColumns = null;
DatabaseMetaData meta = connection.getMetaData();
rsColumns = meta.getColumns(null, null, "table_name",null);     
System.out.println(rsColumns.next()); // I get false here which means resultset is empty. But I dunno why.

Ответы [ 2 ]

0 голосов
/ 04 октября 2017

Можете ли вы попробовать следующий фрагмент:

ResultSet rsColumns = null;
DatabaseMetaData meta = connection.getMetaData();
rsColumns = meta.getColumns(null, null, "table_name",null);     
While (rsColumns,next()) {
System.out.println(rsColumns.getInt("COLUMN_SIZE"));
}

Я думаю, что вам не хватает "COLUMN_SIZE".

0 голосов
/ 07 января 2011

Какую базу данных вы используете? Вероятно, это связано с тем, как обрабатываются идентификаторы без кавычек, базы данных, которые следуют стандарту, автоматически сохраняют их в верхнем регистре. Вы можете программно проверить, делает ли это это, вызвав метод storesUpperCaseIdentifiers.

Решением будет либо использование заключенных в кавычки идентификаторов при создании таблицы, либо вызов метода toUpperCase в строке имени таблицы, если storesUpperCaseIdentifiers вернет true.

...