質問を編集しました: データベースのすべてのテーブルの外部キーを配列リスト Fkeys に格納しようとしています。既存のテーブルの外部キー (存在する場合) を取得するメソッド getFK があります。
public ArrayList Fkeys = new ArrayList();
public ArrayList Vec = new ArrayList();
public ArrayList getFK () {
try {
/* Database connection */
DBConnection connect = new DBConnection();
connect.DBConnect();
Connection con = connect.con;
/* Getting some infos regarding keys*/
DatabaseMetaData metadata = con.getMetaData();
ResultSet clefs = metadata.getImportedKeys(null, null, "persons");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
clefs = metadata.getImportedKeys(null, null, "departments");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
}
これを実行すると、[[ ], [ ]] という結果が得られます。これは、persons と departments の 2 つのテーブルに外部キーがないためです。しかし、これらの行を3つの外部キーを持つテーブルの学生に関するメソッドに追加すると
clefs = metadata.getImportedKeys(null, null, "students");
while(clefs.next()) {
Vec.add(clefs.getString("FKCOLUMN_NAME"));
}
Fkeys.add(Vec);
次の結果が得られます: [[id, person, depp], [id, person, depp], [id, person, depp]] [[id, person, depp], [ ], [ ]] 私が間違っているのは何ですか?Vec の内容が Fkey のすべての位置に格納されるのはなぜですか?