91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java如何獲取insert數據的自增id

發布時間:2021-02-22 16:04:34 來源:億速云 閱讀:456 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關使用java如何獲取insert數據的自增id,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Java可以用來干什么

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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁阳县| 韩城市| 吴旗县| 博罗县| 沂南县| 沁阳市| 山阴县| 巨鹿县| 扶绥县| 司法| 平果县| 宝坻区| 新建县| 明星| 广南县| 土默特右旗| 延长县| 普洱| 东乡| 普兰店市| 孟津县| 兴仁县| 嘉义县| 织金县| 麻江县| 新丰县| 城口县| 中山市| 饶河县| 贺兰县| 永清县| 资源县| 敖汉旗| 开江县| 浠水县| 锡林浩特市| 榆社县| 宁乡县| 保亭| 文昌市| 娱乐|