获取所有数据库并转换为String Array

时间:2012-11-29 08:31:31

标签: java sql database arrays jooq

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

1 个答案:

答案 0 :(得分: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();