您好我正在尝试获取给定表的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
}
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;
我用两个表尝试了代码。
答案 0 :(得分:2)
我认为问题来自于JDBC中方法的相当奇怪的命名,以及难以理解的描述。
要获取表的主键,您应该使用getPrimaryKeys()
来获取表的外键(以及它们引用的主键),使用getImportedKeys()
还有其他方法
- getExportedKeys()
公开引用指定表的外键(因此table参数指定带有主键的表)
- getCrossReference()
是以上所有内容的组合:您需要在约束的两边指定表格