我想为我的应用程序编写备份工具,并且必须使用JAVA 1.6。在我的应用程序内部是几个数据库,如derby,mySQL ..此外,还有不同的数据库模式名称。
我正在使用JPA和Eclipselink。
到目前为止,我编写了一个方法,该方法创建了具有特定模式名称的所有表的列表:
private static List<String> getTableNames(String schema, Connection connection) throws SQLException {
final String TABLE_NAME = "TABLE_NAME";
List<String> tableNames = new ArrayList<>();
DatabaseMetaData dbmd = connection.getMetaData();
ResultSet tablesRS = dbmd.getTables(null, schema, null, null);
while (tablesRS.next()) {
tableNames.add(tablesRS.getString(TABLE_NAME));
}
return tableNames;
}
这有效,但我不知道如何获得实际模式名称。我以为我可以通过EntityManager
获取架构。但我没有找到任何解决方案。有没有办法通过EntityManager
获取我的数据库的架构名称?
有没有更好的方法来动态检索适用于不同数据库的所有表的内容?
注意,我必须使用Java 1.6。
我知道自JAVA 1.7以来getSchema()
对象中存在方法connection
。
答案 0 :(得分:0)
我刚刚在Java Code Geek找到了解决问题的方法。我以为我必须使用模式来获取所有表。事实并非如此:
public static ArrayList getTablesMetadata() throws SQLException {
String table[] = { "TABLE" };
ResultSet rs = null;
ArrayList tables = null;
// receive the Type of the object in a String array.
rs = metadata.getTables(null, null, null, table);
tables = new ArrayList();
while (rs.next()) {
tables.add(rs.getString("TABLE_NAME"));
}
return tables;
}