gpt4 book ai didi

java - 为什么这个 java 代码没有得到最后更新的 ID?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:02 24 4
gpt4 key购买 nike

我从下面的代码中获取最后插入的 ID,但是当我更改它以进行更新时,它总是返回 0 作为最后更新的 ID。有什么不同的方法可以使用准备好的语句在 Java 中获取最后更新的 ID?

public static String updateRegistrationInfo(Integer COMPANY_ID, String FIRST_NAME, String LAST_NAME, String MOBILE_NO,
String WORK_EMAIL, String PASSWORD) throws Exception {
Connection dbConnection = null;
PreparedStatement preparedStatement = null;
Integer last_inserted_id = 0;

String insertTableSQL =
"UPDATE USER_DETAILS SET COMPANY_ID=?,FIRST_NAME=?, LAST_NAME=?, MOBILE_NO=?, WORK_EMAIL=?, PASSWORD=? WHERE WORK_EMAIL=? AND MOBILE_NO=?";

try {

dbConnection = getConnection();

//--USER_ID IS SET TO AUTO INCREMENT PRIMARY KEY

String returnCols[] = { "USER_ID" };

//--INSERTING MEETING DETAILS

preparedStatement = dbConnection.prepareStatement(insertTableSQL, returnCols);

preparedStatement.setInt(1, COMPANY_ID);
preparedStatement.setString(2, FIRST_NAME);
preparedStatement.setString(3, LAST_NAME);
preparedStatement.setString(4, MOBILE_NO);
preparedStatement.setString(5, WORK_EMAIL);
preparedStatement.setString(6, PASSWORD);
preparedStatement.setString(7, WORK_EMAIL);
preparedStatement.setString(8, MOBILE_NO);

// execute insert SQL stetement
preparedStatement.executeUpdate();

ResultSet rs = preparedStatement.getGeneratedKeys();
if (rs.next()) {
last_inserted_id = rs.getInt(1);
}

return last_inserted_id.toString();

} catch (SQLException e) {
return e.getMessage() + " ERROR CODE: " + e.getErrorCode();
} finally {
if (preparedStatement != null) {
preparedStatement.close();
}
if (dbConnection != null) {
dbConnection.close();
dbConnection = null;
}
}
}

最佳答案

与生成新行的INSERT 不同,UPDATE 对现有行进行操作,因此它不会生成新的行键。当您调用此电话时

ResultSet rs = preparedStatement.getGeneratedKeys();
if (rs.next()) {
last_inserted_id = rs.getInt(1);
}

返回的结果为空,因此 last_inserted_id 保持为零。

这背后的逻辑很简单:在 INSERT 中您不知道 key 是什么,因此 JDBC 让您检索它。在 UPDATE 中,您知道要设置的 key - 它是 COMPANY_ID,因此您不需要通过某种方式将其取回。

关于java - 为什么这个 java 代码没有得到最后更新的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32438353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com