【问题标题】:Get all databases and convert to String Array获取所有数据库并转换为字符串数组
【发布时间】:2012-11-17 06:48:35
【问题描述】:

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

【问题讨论】:

  • 底层数据库系统是什么?
  • MySQL,运行在Linux服务器下
  • "show databases" 这个命令给出了所有的数据库名称
  • @HRigger:我的服务器上有几个数据库,我需要在我的组合框中列出所有数据库

标签: java sql database arrays jooq


【解决方案1】:

您有多种选择。例如,您可以使用生成的 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();

【讨论】:

  • 感谢您的详细解答,我已经使用最后一个选项解决了问题。
猜你喜欢
  • 2020-12-11
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 2012-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多