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()指定されたテーブルを参照する外部キーを公開します(したがって、テーブルパラメーターは主キーを持つテーブルを指定します)-getCrossReference()上記のすべての組み合わせです:制約の両側でテーブルを指定する必要があります

于 2012-08-13T18:14:59.137 に答える