我编辑了问题:我正在尝试将数据库所有表的外键存储在 arraylist 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);
}
现在,当我执行此操作时,我得到以下结果: [[ ], [ ]] 因为两个表 person 和部门没有外键。但是当我将这些行添加到有关具有 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的内容存储在Fkeys的所有位置?