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