2014-04-22 91 views
-1

我有一張表訂購其中有字段 Orderid | status | cid |將數據插入到jdbc中的單個事務中的多個表中

和另一個表 ORDER_DETAILS

Oder_details_id | ORDER_ID |物品ID

我想無論是在單個事務表中插入值一樣,如果一個客戶下單,因此一應該生成訂單ID,並且應該將Order_id插入Order和Order_Details表中。 但我怎麼在JDBC?

+0

你嘗試過這麼遠嗎?你可以發佈一些代碼,並顯示不按預期工作嗎? –

+0

我已經通過一些代碼說,要麼使用事務或存儲過程。像第一個(惰性訂單id到訂單表)然後(從訂單表中選擇orderi_d,其中date =「」和itemid =「」),並將order_id插入到order_details表中 – TechGuy

回答

2

你可以將它設置自動提交false

dbConnection.setAutoCommit(false); // to start a transaction block. 

// do your two inserts here 

dbConnection.commit(); // to end a transaction block. 

看看這裏全例如:JDBC Transaction example

+0

它能夠選擇Order_Id,它是主鍵&Auto Increment在Order_Table中,並將此Order_Id插入到Orderdetails表中。在OrderDetails表中它是Forign key @Ashot Karakhanyan – TechGuy

+0

@ user2210442,你可以先插入Order和OrderDetails。當您插入'Order'時,您可以按如下方式檢索生成的'id'(PK):'PreparedStatement ps = conn.prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS')並且在插入後獲取如下: 'int generatedId; try (結果集RS = ps.getGeneratedKeys()){ 如果(rs.next()){ generatedId = rs.getInt(1);} }' 然後,可以插入'OrderDatails時使用該ID作爲FK '。 –

+0

Karakhanayan謝謝先生,但還有一件事更多所以它會返回剛剛生成的** Order_Id(主鍵)**還是會返回所有前面的** Order_Id(主鍵)** – TechGuy

相關問題