0

サーバーからJavaの文字列配列にすべてのデータベースを追加するにはどうすればよいですか?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 に答える