您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關使用java如何獲取insert數據的自增id,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。
1、在連接1中向A表插入一條記錄,A表包含一個auto_increment類型的字段。
2、在連接2中向A表再插入一條記錄。
3、結果:在連接1中執行select LAST_INSERT_ID()得到的結果和連接2中執行select LAST_INSERT_ID()的結果是不同的;而在兩個連接中執行select max(id)的結果是相同的。
其實在MSSQL中SCOPE_IDENTITY()和IDENT_CURRENT()的區別和這里是類似的。使用SCOPE_IDENTITY()可以獲得插入某個IDENTITY字段的當前會話的值,而使用IDENT_CURRENT()會獲得在某個IDENTITY字段上插入的最大值,而不區分不同的會話。
注:使用select last_insert_id()時要注意,當一次插入多條記錄時,只是獲得第一次插入的id值,務必注意!
當然,我們還可以使用另一種更加便捷的方法:在JDBC追加記錄后,使用API獲得新追加記錄的主鍵值。
這個實現使用了Statement的getGeneratedKeys方法,
當Statement追加了一條記錄后,可以直接調用getGeneratedKeys方法獲得新追加記錄的key。
測試程序如下:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class GetGenerateKey { public static void main(String[] args) throws Exception { create(); } public static void create()throws Exception { System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "root", ""); Statement st = conn.createStatement(); String sql = "insert into user (name, birthday, money) values ('beck', '1949-10-01', 60)"; st.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); ResultSet rs = st.getGeneratedKeys(); if (rs.next()) { int id = rs.getInt(1); System.out.println ("生成記錄的key為 :" + id); } st.close(); conn.close(); } }
程序運行結果:
生成記錄的key為 :9
數據庫的記錄為:
1 +----+----------+------------+-------+ 2 | id | name | birthday | money | 3 +----+----------+------------+-------+ 4 | 9 | beck | 1949-10-01 | 60 | 5 +----+----------+------------+-------+
總結:這個API方法提供的好處就是不用重新再執行一次查詢獲得新記錄的key值。減少了工作量和服務器的負擔。
注意點,在執行executeUpdate方法的時候,要指定返回生成key的選項。
===========================================================
2種方法的java 代碼
Java代碼1
// 用這種方法能得到插入自增的id 很好用 PreparedStatement pstmt = conn.prepareStatement(sql.toString(),PreparedStatement.RETURN_GENERATED_KEYS); for (int i = 0; i < pars.length; i++) { pstmt.setObject(i+1, pars[i]); } pstmt.executeUpdate(); long autoIncKeyFromApi = -1; ResultSet rs = pstmt.getGeneratedKeys(); if (rs.next()) { autoIncKeyFromApi = rs.getInt(1); } return autoIncKeyFromApi;
Java代碼2
qRunner.update(conn,sql.toString(),pars); Long zsysqID = (Long) qRunner.query(conn, "SELECT LAST_INSERT_ID()", new ScalarHandler(1));
關于使用java如何獲取insert數據的自增id就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。