2014-01-10 35 views
2

我通過普通的舊JDBC將記錄插入到數據庫表中(因爲這是我正在處理的項目中的設置..尚未遷移到Hibernate)。獲取插入行的編號

這裏是我的表結構

employee (empid int indentity not null, empName); 

,當我試圖通過JDBC代碼

insert into employee(empName) values('something') 

它的工作原理和一條記錄被插入插入記錄。 但是,我需要獲得對插入行的id。我可以嘗試執行單獨的選擇查詢來獲取插入的行,但如果兩個員工姓名相同,可能無法獲得正確的插入記錄標識。

如何使用JDBC獲取插入的記錄ID。我正在使用preparedStatment.executeUpdate,根據是否插入記錄返回0或1。

+0

您使用的數據庫是? –

+0

數據庫是SQL Server ..檢查答案 – user3137375

回答

2

每聲明JavaDoc,你可以使用 「RETURN_GENERATED_KEYS」 像這樣 -

stmt.execute("insert into employee(empName) values('something')", 
    Statement.RETURN_GENERATED_KEYS); 
ResultSet rs = stmt.getGeneratedKeys(); 
if (rs.next()) { 
    return rs.getLong(1); // for example. 
} 
1

您想要閱讀JDBC的Statement#getGeneratedKeys()的文檔,您必須在插入後調用它。這假定你的數據庫支持檢索生成的密鑰,而不是所有的數據庫都這樣做。

0

這取決於從DB:

甲骨文& PostgreSQL的:當你使用一個序列,獲得返回的價值

Mysqlmysql_insert_id()

SQL服務器@@IDENTITY

自定義方式select max(id) from table

純Java(JDBC驅動程序支持):看Statement.getGeneratedKeys() 獲取由於執行該語句的結果創建的所有自動生成的鍵目的。