利用JDBC獲取新插入記錄id的三種方法

2021-09-02 16:48:38 字數 1065 閱讀 3440

在一對多的關聯操作中,通常在一方插入記錄後,需要獲取到當前記錄的id,以方便進行多方的插入操作。要解決這一問題,在jdbc中至少有三種不同的實現方法:

1.在插入語句後新增一條查詢,利用resultset來得到id號

psmt = con.preparestatement

("insert into orders (receiver,address,telephone,total,detailnum,userid)values(?,?,?,?,?,?);select

@@identity");

psmt.setstring(1, order.getreceiver());

……results = psmt.executequery();

if(results.next())

2.利用generatedkey來獲取id

psmt = con.preparestatement

("insert into orders (receiver,address,telephone,total,detailnum,userid)values

(?,?,?,?,?,?)",statement.return_generated_keys);

psmt.setstring(1, order.getreceiver());

……psmt.executeupdate();

results = psmt.getgeneratedkeys();

int num = -1;

if(results.next())

3.呼叫儲存過程來實現,當然這種情況下,插入物件的屬性不宜過多,否則儲存過程的輸入引數太多。在儲存過程中,將id作為輸出引數返回

callablestatement proc = conn.preparecall("");

proc.setstring(1, cardname);

proc.setint(2, money);

proc.registeroutparameter(3, types.integer);

proc.execute();

num = proc.getint(3)

JDBC獲取新插入記錄id的三種方法

在一對多的關聯操作中,通常在一方插入記錄後,需要獲取到當前記錄的id,以方便進行多方的插入操作。要解決這一問題,在jdbc中至少有三種不同的實現方法 1.在插入語句後新增一條查詢,利用resultset來得到id號 psmt con.preparestatement insert into orde...

MyBatis 獲取插入記錄的 id

現在的專案改用 guns 了,也是乙個很不錯的框架,用起來也感覺很不錯,上手也挺方便的。畢竟對於只是應用層面的知識,也基本上就是看看手冊,熟悉熟悉就可以輕鬆上手了。如果是想要深入,或者刨根問底,那麼就需要有一定的基本功了,比如需要完全熟練掌握 j a 的語法特性,熟悉設計模式 對於我而言,暫時還是達...

JDBC獲取插入記錄的主鍵值

實現方案 實現 jdbc 返回插入記錄的主鍵值 實現要求 前提是表的主鍵必須是自增長的 param clazz param sql insert into userinfos username,password,date,address values param args return public...