java - 如何将服务器中的所有数据库添加到Java中的String数组?我正在使用 JOOQ api 执行 SQL 语句,我需要在组合框中获取所有数据库,我可以在其中选择特定数据库。
问问题
477 次
1 回答
2
你有几个选择。例如,您可以使用从 jOOQ-meta 生成的类(或自己生成 information_schema),然后编写:
Factory create = new Factory(connection, dialect);
String[] array =
create.selectDistinct(TABLES.TABLE_SCHEMA)
.from(TABLES)
.fetchArray(TABLES.TABLE_SCHEMA);
当然,同样可以通过纯 SQL 实现:
String[] array =
create.selectDistinct(field("table_schema"))
.from("information_schema.TABLES") // Watch for case-sensitivity on MySQL
.fetchArray(0, String.class);
或者,使用以下SHOW TABLES
命令:
String[] array =
create.fetch("SHOW TABLES")
.intoArray(0, String.class);
另一种选择是从 JDBC 的 DatabaseMetaData 中读取:
Connection connection = ...;
DatabaseMetaData meta = connection.getMetaData();
String[] array = create.fetch(meta.getSchemas()).intoArray(0, String.class);
在 jOOQ 3.0 中,您还可以通过 jOOQ API 读取元数据:
List<Schema> schemas = create.meta().getSchemas();
于 2012-11-30T08:34:36.963 回答