Java get Inserted key from Oracle insert statement
บ่อยครั้งที่เรา Insert Data ลง table ใน Oracle โดยใช้ Value ที่ create ขึ้นเองที่ฝั่ง Database เช่น พวก Sysdate , Sequence ต่างๆ เป็นต้น บางครั้งถ้าค่าเหล่านี้คือ ID ที่เราต้องการนำไปใช้ต่อจะเกิดปัญหาว่าทางฝั่ง Java ไม่รู้จักค่าเหล่านี้ วันนี้มีตัวอย่างการแก้ปัญหานี้มาฝากครับ ยกตัวอย่าง เราต้องการ Insert ค่าลง table ด้วย statement นี้ String query = "INSERT INTO test_table (test_id,test_name) VALUES (test_seq.NEXTVAL,'Test')"; เทคนิคที่ต้องทำเพิ่มเติมคือ ตอนสร้าง statement ให้กำหนด Key Field ด้วยตาม ตัวอย่าง PreparedStatement ps = connection.prepareStatement(query, new String [] { "test_id" }); หลังจากที่เรา execute update แล้วเราจะสามารถ get ค่า Key ผ่าน Result Set ได้เลยครับ ตามตัวอย่างด้านล่าง ps.executeUpdate() ResultSet rs = ps.getGeneratedKeys(); if (null != rs && rs.next()) { studentId = rs.getString(1); }