gpt4 book ai didi

java - 如何在 JDBC 中获取受 UPDATE 查询影响的所有行?

转载 作者:行者123 更新时间:2023-11-29 01:12:57 25 4
gpt4 key购买 nike

我有一项作业需要使用 PreparedStatement 更新记录。一旦记录被更新,我们知道更新查询返回计数,即受影响的行数。

但是,我想要的不是计数,而是响应中受更新查询影响的行,或者至少是受影响行的 id 值列表。

这是我的更新查询。

UPDATE  User_Information uInfo SET address = uInfo.contact_number || uInfo.address where uInfo.user_id between ? AND ?;

通常它会返回受影响的行数,但在我的例子中,查询应该返回行的 ID 或所有受影响的行。

我使用了 PostgreSQL 的 returning 函数,它可以正常工作,但在那种情况下对我没有用。

最佳答案

i have used returning function of PostgreSQL but is not useful for me

应该是。也许你只是用错了。这段代码对我有用:

sql = "UPDATE table1 SET customer = customer || 'X' WHERE customer LIKE 'ba%' RETURNING id";
try (PreparedStatement s = conn.prepareStatement(sql)) {
s.execute(); // perform the UPDATE
try (ResultSet rs = s.getResultSet()) {
// loop through rows from the RETURNING clause
while (rs.next()) {
System.out.println(rs.getInt("id")); // print the "id" value of the updated row
}
}
}

documentation表示如果我们希望 ResultSet 包含整个更新的行,我们也可以使用 RETURNING *

更新:

正如@CraigRinger 在他的评论中所建议的那样,PostgreSQL JDBC 驱动程序实际上也支持 .getGeneratedKeys() 用于 UPDATE 语句,因此这段代码也对我有用:

sql = "UPDATE table1 SET customer = customer || 'X' WHERE customer LIKE 'ba%'";
try (PreparedStatement s = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
s.execute(); // perform the UPDATE
try (ResultSet rs = s.getGeneratedKeys()) {
while (rs.next()) {
System.out.println(rs.getInt(1)); // print the "id" value of the updated row
}
}
}

谢谢,克雷格!

关于java - 如何在 JDBC 中获取受 UPDATE 查询影响的所有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36477916/

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