我有一个插入sql查询。它工作正常,我只想获得它将生成的p_id
并将其存储为变量,然后我将有另一个INSERT
语句然后我将放置该ID的变量。我正在做System.out.println
并产生null
这是我将运行的查询,它工作正常,它将数据插入数据库中。 (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 :(得分: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
。但是,为了获得最后插入的主键值,您需要按照上面的代码段进行操作。