【问题标题】:DatabaseMetada.getImportedKey is empty even if foreign are existingDatabaseMetada.getImportedKey 为空,即使外部存在
【发布时间】:2017-04-24 14:19:52
【问题描述】:

对于我的项目,我尝试使用数据库元数据对象表单 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);
            }


        }

【问题讨论】:

  • 哪个数据库和哪个驱动+版本?另外,如果您的数据库以大写形式存储未加引号的表名,请尝试使用"BOOKMARKS_TAGS" 作为表名,并使用null 作为架构名称
  • sgbd : mysql 驱动程序 : mysql 的 lat jdbc 驱动程序,我已经尝试使用 null 作为架构名称,我将在明天恢复工作时尝试大写
  • "sgbd : mysql driver : the lat jdbc driver for mysql"

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


【解决方案1】:

偶然发现了这一点,如果有人看到它,这可能会有所帮助

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);
            }


        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-02
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2012-12-23
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多