试图理解这里发生了什么。虽然有效的SQL查询没有问题,但是DatabaseMetaData返回一个空结果集。这不是什么大问题,因为我正在使用第二个代码示例作为解决方法。
DatabaseMetaData dmd = this.connection.getMetaData();
ResultSet rs = dmd.getSchemas();
while (rs.next()){
// empty result set
}
预期得到的是一个非空结果集。
ResultSet rs = this.connection.prepareStatement("SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA;").executeQuery();
while (rs.next()){
// non-empty result set with expected results
}
预期得到非空的结果集,并且已经得到了。
getCatalog
的决定是在 MySQL 实现信息模式并将数据库模式称为目录之前做出的。要撤销这样的决定相当困难,因为它会破坏已经依赖它的应用程序。JDBC 规范明确指出,不存在或不支持的元数据应返回空结果集。 - Mark Rotteveel