如何在java中将所有数据库从服务器添加到String数组?我正在使用JOOQ api来执行SQL语句,我需要获取comboBox中的所有数据库,我可以在其中选择特定的数据库。
答案 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();