• MySQL问题记录——getGeneratedKeys


    MySQL问题记录——getGeneratedKeys

    摘要:本文主要记录了新增记录并获取自增主键时出现的原因及解决办法。

    问题重现

    在使用JdbcTemplate尝试新增一条记录并获取自增主键时,系统后台报错了。

    代码:

     1 String sql = "insert into bs_book(title, author) values(?, ?)";
     2 KeyHolder keyHolder = new GeneratedKeyHolder();
     3 jdbcTemplate.update(new PreparedStatementCreator() {
     4     @Override
     5     public PreparedStatement createPreparedStatement(Connection con)
     6             throws SQLException {
     7         PreparedStatement prepareStatement = con.prepareStatement(sql);
     8         prepareStatement.setString(1, "平凡的世界");
     9         prepareStatement.setString(2, "路遥");
    10         return prepareStatement;
    11     }
    12 }, keyHolder);
    13 System.out.println("id=" + keyHolder.getKey().intValue());

    MySQL的驱动为5.1.7版本的报错信息:

    1 Caused by: java.sql.SQLException: !Statement.GeneratedKeysNotRequested!

    MySQL的驱动为5.1.7以后的版本的报错信息:

    1 Caused by: java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().

    解决办法

    在使用Connection获取PreparedStatement的时候,同时传入一个常量参数:

    1 PreparedStatement prepareStatement = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

    问题说明

    MySQL的驱动版本在5.1.7之前是不会报这个异常的,在5.1.7及以后的版本中,如果要使用PreparedStatement对象的getGeneratedKeys()方法获取插入的主键,就必须要在使用Connection获取PreparedStatement的时候传入一个常量,否则就会报错。

    在5.1.7版本中报错:

    1 Caused by: java.sql.SQLException: !Statement.GeneratedKeysNotRequested!

    在5.1.7以后的版本中报错:

    1 Caused by: java.sql.SQLException: Generated keys not requested. You need to specify Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or Connection.prepareStatement().
  • 相关阅读:
    20162325 金立清 S2 W7 C16
    2017-2018-1 我爱学Java 第三周 作业
    Android演示Stack(课下作业)
    20162325 金立清 S2 W6 C15
    YanghuiTriangle
    20162327WJH第一次实验——线性结构
    20162327 《程序设计与数据结构》第三周学习总结
    20162327《程序设计与数据结构》第一周作业
    20162327WJH 实验三 《敏捷开发与XP实践》 实验报告
    20162328WJH实验五网络编程与安全实验报告
  • 原文地址:https://www.cnblogs.com/shamao/p/13219323.html
Copyright © 2020-2023  润新知