0

java - 如何将服务器中的所有数据库添加到Java中的String数组?我正在使用 JOOQ api 执行 SQL 语句,我需要在组合框中获取所有数据库,我可以在其中选择特定数据库。

4

1 回答 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 回答