JDBC mysql meta.getExportedKeys()返回空结果集

时间:2012-08-12 12:21:48

标签: java mysql jdbc

您好我正在尝试获取给定表的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;

我用两个表尝试了代码。

1 个答案:

答案 0 :(得分:2)

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

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

还有其他方法   - getExportedKeys()公开引用指定表的外键(因此table参数指定带有主键的表)   - getCrossReference()是以上所有内容的组合:您需要在约束的两边指定表格