java.sql.SQLException: Generated keys not requested. You need to ... 錯誤

主要方法

/**
* 添加一條數(shù)據(jù)
* @param bean
*/
public void add(Category bean){
String sql="insert into category values(null,?)";
try (Connection connection = DBUtil.getConnction();
PreparedStatement preparedStatement=connection.prepareStatement(sql);
) {
preparedStatement.setString(1,bean.getName());
preparedStatement.execute();
//獲得主鍵id號
ResultSet resultSet=preparedStatement.getGeneratedKeys();
if(resultSet.next()){
int id=resultSet.getInt(1);
bean.setId(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
}

錯誤詳情

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

原因

從5.1.7版本之后的mysql-connector增加了返回GeneratedKeys的條件,如果需要返回GeneratedKeys,則PreparedStatement需要顯示添加一個參數(shù)Statement.RETURN_GENERATED_KEYS。

PreparedStatement preparedStatement=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

修改代碼

/**
* 添加一條數(shù)據(jù)
* @param bean
*/
public void add(Category bean){
String sql="insert into category values(null,?)";
try (Connection connection = DBUtil.getConnction();
//修改部分
PreparedStatement preparedStatement=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
) {
preparedStatement.setString(1,bean.getName());
preparedStatement.execute();
//獲得主鍵id號
ResultSet resultSet=preparedStatement.getGeneratedKeys();
if(resultSet.next()){
int id=resultSet.getInt(1);
bean.setId(id);
}
} catch (SQLException e) {
e.printStackTrace();
}
}

成功運行。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本節(jié)介紹Statement接口及其子類PreparedStatement和CallableStatement。 它...
    zlb閱讀 1,242評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,687評論 18 399
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,011評論 0 11
  • 這個話題的引發(fā)是在前幾年年中公司述職中我的一個下屬提出的一個問題,他說由于平時工作很緊張,經(jīng)常加班,他和大家都沒有...
    大道無形閱讀 1,439評論 0 3
  • 愛情是什么?我至今沒有尋求到答案。 是元好問的“問世間情為何物,直教人生死相許”?還是晏幾道的“淺情終似,行云無定...
    匹馬先生閱讀 908評論 0 0

友情鏈接更多精彩內(nèi)容