我編輯的問題: 我想存儲數據庫的所有表的外鍵在一個數組列表Fkeys。我有現有表的檢索外鍵(如果存在)的方法getFK將元素存儲到ArrayList中,但會導致冗餘?
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);
}
現在,當我執行此我得到這樣的結果:[],[],因爲這兩個表的人員和部門都沒有外鍵。 但是,當我將這些行添加到該方法對於其中有3個外鍵
我得到這個結果表學生: [ID,人,德普],[ID,人,德普],[ id,person,depp]] 雖然它應該是: [[id,person,depp],[],[]] 我在做什麼錯?爲什麼Vec的內容存儲在Fkeys的所有位置?
譜號聲明在哪裏,它在哪裏填充? –
這很明顯,這不是真正的代碼,嚴重懷疑它足夠緊密地匹配真正的代碼以進行適當的分析。請提供一個真正的SSCCE。 –
您好像每次調用'getFK'時都會返回同樣的'ArrayList'實例(它在方法外聲明爲常規類成員)。使數組列表成爲'getFK'的適當局部變量。 – Dirk