2016-02-25 105 views
1

我有一個插入sql查詢。它工作正常,我只想得到它將生成的p_id並將其作爲變量存儲,然後我將擁有另一個INSERT語句,然後我將該ID的變量。我做一個System.out.println和它產生nullJSP,mysql - 如何從新查詢結果中獲取和存儲變量

這是我將運行的查詢,它工作正常,它將數據插入到數據庫中。 (該ID auto_incremented,所以我沒把那個)

int i = st.executeUpdate("INSERT INTO logs_pms_t_project (p_name, p_objective) VALUES ('"+p_name+"','"+p_objective+"')");

我如何獲得p_id

String p_id= request.getParameter("p_id");上面的查詢

後,雖然我現在可以執行的思念另一個查詢知道我有一個變量p_id

int j = st.executeUpdate("INSERT INTO logs_pms_r_budget (budget_cost, p_id) VALUES ('"+p_budget+"','"+p_id+"')");

+0

executeUPdate返回受影響行的數量 – 1000111

+0

對不起,隊友,它沒有幫助我。 – WTFZane

+0

我打算說executeUpdate只返回受影響的行數。但是,如果你想從它上次插入的ID,然後看看下面給出的答案。 – 1000111

回答

1

嘗試以下操作:

int i = st.executeUpdate("INSERT INTO logs_pms_t_project (p_name, p_objective) 
     VALUES ('"+p_name+"','"+p_objective+"')",Statement.RETURN_GENERATED_KEYS); 

ResultSet rs = st.getGeneratedKeys(); 
int lastInsertedID = -1; 
if (rs.next()) { 
    lastInsertedID = rs.getInt(1); 
    System.out.println("Last Inserted ID = " + lastInsertedID); 
} 

它將返回最後插入的ID(主鍵)。

備註:ExecuteUpdate返回number of affected rows

單次插入將始終影響表中的一行。所以變量i包含值1。但爲了獲得最後插入的主鍵值,您需要遵循上面的代碼片段。

+0

那麼如何將ID存儲到一個變量? – WTFZane

+0

因此最後插入的ID將被存儲在'lastInsertedID'變量中。請檢查這個@WTFZane – 1000111

+0

嘿,爲什麼它必須是'-1'?,之前的編輯工作。爲什麼這個新的不同? – WTFZane

相關問題