2012-11-29 60 views
0

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

+0

什么是底层数据库系统? – Alex

+0

在哪个数据库服务器上? –

+0

MySQL,在Linux服务器下运行 – user506246

回答

2

你有几个选择。例如,你可以使用从jOOQ-元生成的 类(或产生的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的Databa阅读seMetaData:

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(); 
+0

谢谢你的详细答案,我已经解决了使用最后一个选项的问题。 – user506246

相关问题