1

嗨,我正在尝试获取给定表的外键,我正在使用以下代码:

ResultSet rs = meta.getImportedKeys(_con.getCatalog(), null, _tableName);
        while (rs.next())
        {
            //get the foreignKeys
        }
ResultSet rs2 = meta.getExportedKeys(_con.getCatalog(), null, _tableName);
        while (rs2.next())
        {
            //get the foreignKeys
        }

resultSet 是空的,虽然该表包含一个外键并且是另一个表的外键,

工作getImportedKeys正常。

感谢您的任何建议。

表:

CREATE TABLE `COMMANDE` (
  `COMMANDE_ID` int(11) NOT NULL,
  `CLIENT_ID` int(100) DEFAULT NULL,
  `TOURNEE_ID` int(100) DEFAULT NULL,
  PRIMARY KEY (`COMMANDE_ID`),
  KEY `CLIENT_ID` (`CLIENT_ID`),
  KEY `TOURNEE_ID` (`TOURNEE_ID`),
  CONSTRAINT `commande_ibfk_1` FOREIGN KEY (`CLIENT_ID`) REFERENCES `CLIENT` (`CLIENT_ID`),
  CONSTRAINT `commande_ibfk_2` FOREIGN KEY (`TOURNEE_ID`) REFERENCES `TOURNEE` (`TOURNEE_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `CLIENT` (
  `CLIENT_ID` int(100) NOT NULL,
  `LIBELLE` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`CLIENT_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我尝试了两个表的代码。

4

1 回答 1

2

我认为问题在于 JDBC 中方法的相当奇怪的命名,以及难以理解的描述。

要获取表的主键,您应该使用getPrimaryKeys(), 来获取表的外键(以及它们引用的主键),使用getImportedKeys()

还有一些额外的方法——getExportedKeys()暴露引用指定表的外键(所以 table 参数用主键指定表)——getCrossReference()是以上所有方法的组合:你需要在约束的两边指定表

于 2012-08-13T18:14:59.137 回答