亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

使用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

高阳县| 沙洋县| 伊金霍洛旗| 新泰市| 井陉县| 宁波市| 庆元县| 油尖旺区| 定远县| 灵寿县| 巴东县| 泗水县| 夏河县| 公主岭市| 平塘县| 大名县| 宝鸡市| 石楼县| 石城县| 阳春市| 巫溪县| 刚察县| 娱乐| 新绛县| 胶南市| 开化县| 兖州市| 云龙县| 布尔津县| 扎兰屯市| 辽宁省| 尼玛县| 安徽省| 秦皇岛市| 新丰县| 巴塘县| 新化县| 岢岚县| 广州市| 东宁县| 濮阳市|