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);
 }

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

java -Xms , java -Xmx กำหมด memory ให้ JVM เพื่อป้องกันปัญหา Out of Memory

Oracle date format จัด format date ให้แสดง พศ และ เดือน ภาษาไทยหรือตามภาษาที่เราเลือก

Java this กับ super การใช้งานคำสั่ง this กับ super ใน ภาษา Java