У меня возникает проблема получения метаданных из подключения MySQL, выполняемого локально, Ubuntu 14, с Java и NetBeans. Я получаю пустой ResultSet из метода getColumns
объекта DatabaseMetaData
.DatabaseMetaData # getColumns возвращает пустой ResultSet
Код следующее: DBA
private static HashMap getColumnsFromDB(Connection con, String dbSchema, String tableName) throws SQLException
{
HashMap Columns = new HashMap();
DatabaseMetaData metadata = con.getMetaData();
ResultSet rsColumns = metadata. getColumns(null, dbSchema.toUpperCase(), tableName.toUpperCase(), "%");
while (rsColumns.next())
{
ColumnClass col = new ColumnClass();
col.column_name = rsColumns.getString("COLUMN_NAME");
col.mw_type = UtilClass.toClass(rsColumns.getInt("DATA_TYPE")); // Convert to java type
col.is_nullable = rsColumns.getString("IS_NULLABLE");
col.column_default = rsColumns.getString("COLUMN_DEF");
Columns.put(col.column_name, col);
}
return Columns;
}
Я могу делать запросы к базе данных, как правило, пользователь, таблица имеет столбцы, я видел в других вопросах, которые он может быть немного сложнее, с случаями и так далее, но я пробовал по-разному, и у меня не было ожидаемых результатов.
Это не работает. Я подозреваю, что это может быть что-то неправильно с драйвером, в любом случае я использую Ubuntu 14.04, mysql 5.5, jdbc 5.1.35, jdk 1.8 и netbeans 8.0.2, если кто-то знает проблему совместимости. – Checho
Что возвращает 'con.getCatalog()'? Ожидаемое имя базы данных? Пустая строка? 'Null'? –
Это пустая строка в вызове метода. После con.setCatalog() он принимает заданное значение («Пользователи» в этом случае), но все равно возвращает пустой набор. Когда я запрашиваю базу данных информационной схемы, все таблицы имеют значение «def» в столбце TABLE_CATALOG (я думаю, что это означает что-то вроде «по умолчанию»). Я использую это сейчас как обходной путь. – Checho