Мне нужно перечислить таблицы в базе данных Derby (она же Java DB), используя JDBC в программе Java. Все, что я знаю для этого, это команда 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.
Итак, кто-нибудь может мне помочь перечислить таблицы в моей базе данных Derby (Java DB) из JDBC?
РЕДАКТИРОВАТЬ : Я осматриваюсь и начинаю чувствовать, что это может быть общий вопрос JDBC. Другими словами, можно / будет перечислять все таблицы БД с объектом DatabaseMetaData, который можно получить из объекта Connection. Заглядывая в это (и с нетерпением жду ответов) ...
EDIT 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);
}