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

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

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

1.在插入語句後添加一條查詢,利用resultset來得到id號
psmt = con.prepareStatement ("insert into orders (receiver,address,telephone,total,detailnum,userid)values(?,?,?,?,?,?)");
psmt.setString(1, order.getReceiver());
……

psmt.executeUpdate();

psmt = con.prepareStatement ("select @@identity");

results = psmt.executeQuery();
if(results.next()){
num = results.getInt(1);
}
2.利用generatedKey來獲取id
psmt = con.prepareStatement("insert into orders (receiver,address,telephone,total,detailnum,userid)values(?,?,?,?,?,?)");
psmt.setString(1, order.getReceiver());
……
psmt.executeUpdate();
results = psmt.getGeneratedKeys();
int num = -1;
if(results.next()) {
num = results.getInt(1);
}

3.調用存儲過程來實現,當然這種情況下,插入對象的屬性不宜過多,否則存儲過程的輸入參數太多。在存儲過程中,將id作爲輸出參數返回
CallableStatement proc = conn.prepareCall("{call proc_insert(?,?,?)}");
proc.setString(1, cardname);
proc.setInt(2, money);
proc.registerOutParameter(3, Types.INTEGER);
proc.execute();
int num = proc.getInt(3)

發佈了76 篇原創文章 · 獲贊 1 · 訪問量 9330
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章