Java プログラムで JDBC を使用して、Derby (別名 Java DB) データベースのテーブルを列挙する必要があります。これを行うために私が知っているのは、SHOW TABLES コマンドだけです。
私は最初にこれに似たもので試しました...
String strConnectionURL = "jdbc:derby:/path/to/derby/database;create=false";
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection(strConnectionURL);
Statement statement = connection.createStatement();
boolean boResult = statement.execute("SHOW TABLES");
if (boResult) {
System.out.println("yay!");
}
...しかし、それは例外をスローします:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "SHOW" at line 1, column 1.
次に、CallableStatement を使用する必要があるのではないかと考えたので、これを試しました...
String strConnectionURL = "jdbc:derby:/path/to/derby/db;create=false";
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection(strConnectionURL);
CallableStatement statement = connection.prepareCall("SHOW TABLES");
boolean boResult = statement.execute();
if (boResult) {
System.out.println("yippee!");
}
...しかし、それは同じ例外をスローします:
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "SHOW" at line 1, column 1.
では、JDBC から Derby (Java DB) データベースのテーブルを列挙するのを手伝ってくれる人はいますか?
編集:私は周りを見回していて、これは一般的なJDBCの質問かもしれないと感じ始めています。つまり、Connection オブジェクトから取得できる DatabaseMetaData オブジェクトを使用して、すべてのデータベースのテーブルを列挙できます。それを調べて(そして応答を楽しみにしています)...
編集 2 : 純粋な JDBC ソリューションを見つけましたが、代替案を聞いて喜んでいます...
String strConnectionURL = "jdbc:derby:/path/to/db;create=false";
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection connection = DriverManager.getConnection(strConnectionURL);
DatabaseMetaData dbmd = connection.getMetaData();
ResultSet resultSet = dbmd.getTables(null, null, null, null);
while (resultSet.next()) {
String strTableName = resultSet.getString("TABLE_NAME");
System.out.println("TABLE_NAME is " + strTableName);
}