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

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
        }

结果集为空,尽管该表包含外键并且是另一个表的外键,
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;

我在两张桌子上都试过密码。

最佳答案

我认为问题来自JDBC中方法的命名,以及难以理解的描述。
要获取表的主键,应该使用getPrimaryKeys(),要获取表的外键(以及它们引用的主键),请使用getImportedKeys()
还有其他方法
-getExportedKeys()公开引用指定表的外键(因此table参数使用主键指定表)
-getCrossReference()是以上所有内容的组合:需要指定约束两边的表

10-06 03:17