java getGeneratedKeys(獲取自動遞增主鍵)一個小問題


項目組一孩子把我叫過去,說是通過Statement的getGeneratedKeys()獲取不到主鍵,並且一直拋500,看了下他寫的代碼發現兩個問題,他的代碼大概如下:

 PreparedStatement pstmt = con.prepareStatement("INSERT INTO TAB(NAME) VALUES('name')");
 ResultSet rs = pstmt.getGeneratedKeys();
 if (rs.next()) {
      int primaryKey = rs.getInt(1);
 }

根據API描述,上述代碼缺少一個小步驟就是未指示是否應該返回自動生成的鍵的標志(Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS),還有一個小錯誤就是PreparedStatement並未指定插入操作。小改一下就沒問題了。

PreparedStatement pstmt = con.prepareStatement("INSERT INTO TAB(NAME) VALUES('name')", Statement.RETURN_GENERATED_KEYS);
 pstmt.executeUpdate();
 ResultSet rs = pstmt.getGeneratedKeys();
 if (rs.next()) {
      int primaryKey = rs.getInt(1);
 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM