JDBC中對PreparedStatement的理解對資料庫自動產生的主索引值的擷取,

來源:互聯網
上載者:User

JDBC中對PreparedStatement的理解對資料庫自動產生的主索引值的擷取,

PreparedStatement 介面

public interface PreparedStatement
extends Statement

表示先行編譯的 SQL 陳述式的對象。

SQL 陳述式被先行編譯並儲存在 PreparedStatement 對象中。然後可以使用此對象多次高效地執行該語句。(JDK   API 1.6中的說明)

該介面可以對SQL語句進行先行編譯,可以防止sql注入問題,同時在執行多次相同的sql語句時,因為預先編譯,執行時不需要再重複編譯,所以效率比Statement高

(Statement每次執行sql語句時,都會進行編譯然後在執行)

——————————————————————————————————————————————————————————————————————————————

//插入語句,第二個參數返回一個int類型的主索引值PreparedStatement  pstmt=conn.prepareStatement("insert into tb_user values(null,?,?)",Statement.RETURN_GENERATED_KEYS);

//在語句執行之後返回一個主索引值的結果集ResultSet

ResultSet rs=ps.getGeneratedKeys();

在Statement中也有類似的方法,在execute(String sql,int autoGeneratedKeys)等其他方法中可以使用

例如:

import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.Statement;/** * 對獲得資料庫自動產生的主索引值進行擷取 * @author dingshuangen * */public class getKey {public static void main(String[] args) {Connection conn=DbUtil.getConnection();PreparedStatement ps=null;PreparedStatement ps_h=null;ResultSet rs=null;try {//插入語句,第二個參數返回一個int類型的主索引值ps=conn.prepareStatement("insert into tb_user values(null,?,?)",Statement.RETURN_GENERATED_KEYS);ps.setString(1, "金剛葫蘆娃");ps.setString(2, "小葫蘆");//執行語句ps.execute();//獲得返回的主索引值,傳回型別為ResultSet結果集rs=ps.getGeneratedKeys();rs.next();//擷取該主索引值int key=rs.getInt(1);System.out.println("+++主鍵+++"+key+"++++++");ps_h=conn.prepareStatement("insert into tb_hobby values(null,?,?)");//迴圈插入多條資料String[] hobby= {"吃飯","睡覺","打豆豆"};for (String h : hobby) {ps_h.setInt(1, key);ps_h.setString(2, h);ps_h.execute();}System.out.println("執行成功");}catch(Exception e) {e.printStackTrace();}finally {//關閉所有資源DbUtil.close(rs);DbUtil.close(ps);DbUtil.close(ps_h);DbUtil.close(conn);}}}



執行的結果如下:

+++主鍵+++7++++++執行成功

對應資料庫表格式資料:


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.