嗨,我正在尝试获取给定表的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()
是以上所有内容的组合:需要指定约束两边的表