即使外部存在,DatabaseMetada.getImportedKey也为空

时间:2017-04-24 14:19:53

标签: java database jdbc foreign-keys database-metadata

对于我的项目,我尝试使用DatabaseMetada Object形式jdbc获取我的表中的所有外键但是当我执行以下代码时,即使我的表包含外键,结果集也总是空的?

ResultSet v_resultPrimaryKey = p_metadata.getImportedKeys(null, Tools.getDBName(), "bookmarks_tags");


        if (v_resultPrimaryKey.next()) {
            System.out.println("test");
            v_resultPrimaryKey.beforeFirst();
            v_resultPrimaryKey.beforeFirst();

            while (v_resultPrimaryKey.next()) {
                if (p_att.equals(v_resultPrimaryKey.getString("FKCOLUMN_NAME"))) {
                    v_fk = v_resultPrimaryKey.getString("PKTABLE_NAME") + "."
                           + v_resultPrimaryKey.getString("PKCOLUMN_NAME");
                    v_fkName = v_resultPrimaryKey.getString("FK_NAME");
                }
            }               

            if(!v_fk.equals("")){
                v_foreignKey = new ForeignKey(v_fkName, v_fk);
            }


        }

1 个答案:

答案 0 :(得分:0)

偶然发现,这可能会有所帮助,以防万一有人看到它

DatabaseMetaData p_metadata= connection.getMetaData();
ResultSet v_resultPrimaryKey = p_metadata.getImportedKeys(null, Tools.getDBName(), "bookmarks_tags");

   if (v_resultPrimaryKey.next()) {
       System.out.println("test");
       v_resultPrimaryKey.beforeFirst();
       v_resultPrimaryKey.beforeFirst();

            while (v_resultPrimaryKey.next()) {
                if (p_att.equals(v_resultPrimaryKey.getString("FKCOLUMN_NAME"))) {
                    String v_fk = v_resultPrimaryKey.getString("PKTABLE_NAME") + "."
                           + v_resultPrimaryKey.getString("PKCOLUMN_NAME");
                    String v_fkName = v_resultPrimaryKey.getString("FK_NAME");
                }
            }               

            if(!v_fk.equals("")){
                v_foreignKey = new ForeignKey(v_fkName, v_fk);
            }


        }