通常我們在應用中對mysql執行了insert操作后,需要獲取插入記錄的自增主鍵,這時候通常用getGeneratedKeys()方法獲取主鍵
1. 獲得數據庫返回的主鍵
insert into book values(null,'編程珠璣',45);
2. 獲得主鍵的步驟
conn.prepareStatement(sql,autoGeneratedKeys)
autoGeneratedKeys是一個int值 ,1代表返回生成的主鍵,2代表不返回生成的主鍵;為了方便記憶,使用 Statement.Statement.RETURN_GENERATED_KEYS,Statement.NO_GENERATED_KEYS
3.獲得生成的主鍵
ResultSet rs=ps.getGeneratedKesy();
rs.next();
int userno= rs.getInt(1);
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,
java.sql.ResultSet.CONCUR_UPDATABLE);
// ...
// 省略若干行(如上例般創建demo表)
// ...
stmt.executeUpdate(
"INSERT INTO autoIncTutorial (dataField) "
+ "values ('Can I Get the Auto Increment Field?')",
Statement.RETURN_GENERATED_KEYS); // 向驅動指明需要自動獲取generatedKeys!
int autoIncKeyFromApi = -1;
rs = stmt.getGeneratedKeys(); // 獲取自增主鍵!
if (rs.next()) {
autoIncKeyFromApi = rs.getInt(1);
} else {
// throw an exception from here
}
rs.close();
rs = null;
System.out.println("Key returned from getGeneratedKeys():"
+ autoIncKeyFromApi);
} finally { ... }