用于获取子表及其所有后代的JDBC方法

时间:2015-07-25 05:44:12

标签: jdbc database-schema database-metadata

是否有JDBC方法来获取子表及其所有后代。

getExportedKeys仅返回直接子节点而不返回其所有后代节点。如果我继续以递归方式调用getExportedKeys()方法,那么50个左右的表大约需要3分钟(这非常慢)

有人可以帮我解决问题。

主要目标是避免使用查询,因为我将处理不同的数据库。

使用的递归函数:

private static void getChildTables(DatabaseMetaData dbmd,Set<String> dependencies,String tableName,String schemaname ) throws SQLException{
       ResultSet rs3 = dbmd.getExportedKeys(null,schemaname, tableName);    
         while (rs3.next()){       
if(dependencies.contains(rs3.getString(7)))
   continue;
 dependencies.add(rs3.getString(7));
 String childTable=rs3.getString(7);
getChildTables(dbmd, dependencies, childTable, null);
 rs3.close();
 rs3 = dbmd.getExportedKeys(null,schemaname, tableName);                    
         }

0 个答案:

没有答案