2009-05-28 66 views
1

有一個具有雙主鍵的鏈接(或參考)表。需要返回從選定表格中的當前連接自動生成的最後一個主鍵。這是用java編寫的。 數據庫在MS Access中,如果有所作爲。 不好意思的描述,但我們的團隊正在緊張工作。如何返回java中最後一個添加項的最後一個主鍵?

任何鏈接或建議將很樂意讚賞。

編輯:

數據庫使用SQL填充。我們輸入一個表格的數據,但我們不知道自動生成的數字。需要找出這是什麼,所以它可以輸入到裁判表中。我們只知道一半的組合鍵,這就是爲什麼我們需要第二個鍵。

編輯:

重新最好的答案到目前爲止(不能似乎評論)。 我收到以下錯誤... 「線程異常」AWT-EventQueue-0「java.lang.UnsupportedOperationException」

有什麼建議嗎?

+0

關於UnsupportedOperationException的問題。可能是Access不支持此操作。谷歌搜索,似乎並不是所有的數據庫都支持這種功能。例如,我在Oracle工作中不得不採用不同的方法,因爲它沒有標識列。如果重新設計密鑰還不算太晚,請嘗試切換到基於UUID的密鑰,以便您可以使用Java生成密鑰並將它們推入數據庫,而不是讓數據庫生成它們。不過,可能已經太晚了,無法做出改變。 – 2009-05-28 16:18:50

+0

在這個項目上沒有時間。這很重要。如果有人對解決方法感興趣,那麼有一個。將唱片保存到一個單獨的樂曲中,然後將它保存到最後保存的唱片中,然後在相同的情況下獲得該琴鍵,然後下一個最後保存的唱片等到您找到琴鍵爲止。對不起,我的C密鑰由於某種原因不起作用,僅限Cap,wtf?大聲笑 – Relequestual 2009-05-29 11:56:25

回答

2

你需要做兩件事情。首先,在準備報表或執行報表時,您必須傳遞額外的參數。如果你不使用準備好的語句,請執行下列操作,當你調用的executeUpdate()

stmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); 

stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 

您執行語句後如果你使用準備好的語句,請執行下列操作,你可以撥打

ResultSet rs = stmt.getGeneratedKeys() 

這將給你一個結果集,其中包含任何生成的鍵。

我還沒有試過這種方法與Access,但它與SQL Server身份列正常工作。

0

將組合鍵的兩個值放入具有兩個元素的Object數組中,並返回該值。

或者,將新組合鍵放入剛剛保存的實例中並返回。

2

的Statement.getGeneratedKeys()應該做的伎倆......