MySQL版本問題引起的異常解決

從git上把代碼拉到本地,代碼執行添加操作報錯Generated keys not requested. You need to specify Statement.RETURN_GENERATED

原代碼:

public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                PreparedStatement ps = connection.prepareStatement(sql);
                int index = 1;
                for (Object param : params) {
                    ps.setObject(index++, param);
                }
                return ps;
            }

解決辦法:prepareStatement方法需要顯示添加一個參數Statement.RETURN_GENERATED_KEYS。

修改後的代碼:

 public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
                PreparedStatement ps = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//顯式添加參數Statement.RETURN_GENERATED_KEYS
                int index = 1;
                for (Object param : params) {
                    ps.setObject(index++, param);
                }
                return ps;
            }

原因:從5.1.7版本之後的mysql-connector增加了返回GeneratedKeys的條件,如果需要返回GeneratedKeys,則PreparedStatement需要顯示添加一個參數Statement.RETURN_GENERATED_KEYS保證版本兼容。

發佈了33 篇原創文章 · 獲贊 51 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章