【问题标题】:Unable to get foreign keys using getImportedKeys() or getExportedKeys(), only getPrimaryKeys() work无法使用 getImportedKeys() 或 getExportedKeys() 获取外键,只能使用 getPrimaryKeys()
【发布时间】:2018-11-30 01:21:51
【问题描述】:

我无法使用元数据中的 getImportedKeys() 或 getExportedKeys() 找到外键。数据库确实包含外键关系并且 getPrimaryKey() 确实有效。我该如何解决这个问题?

DatabaseMetaData dbMeta = conn.getMetaData();
System.out.println("Foreign Keys are\n");
ResultSet rs = dbMeta.getExportedKeys("", "", "CUSTOMERS");
while (rs.next()) {
    //System.out.println(rs.getString("FKCOLUMN_NAME"));
    System.out.println(rs.getString("FK_NAME") + "\t" + rs.getString("FKCOLUMN_NAME"));
    }

【问题讨论】:

  • 数据库中的字段是否标记为外键?
  • 您可以发布您尝试获取它们的代码吗?
  • @JohnKane 是的,它们被标记为外键。
  • @StaticVoid 当然,我更新了问题。

标签: java mysql postgresql jdbc foreign-keys


【解决方案1】:

试试这个,看看它是否有效:)

private static void printForeignKeys(Connection connection, String CUSTOMERS) throws SQLException {
    System.out.println("Foreign Keys are\n");
    DatabaseMetaData dbMeta= connection.getMetaData();
    ResultSet foreignKeys = dbMeta.getImportedKeys(connection.getCatalog(), null, CUSTOMERS);
    while (foreignKeys.next()) {
        String fkName = foreignKeys.getString("FK_NAME");
        String fkColumnName = foreignKeys.getString("FKCOLUMN_NAME");
        System.out.println(fkName + "." + fkColumnName);
    }
}

【讨论】:

    猜你喜欢
    • 2017-08-26
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    相关资源
    最近更新 更多