当前位置: 首页 > 知识库问答 >
问题:

更新并返回:无法检索ResultSet

莫英喆
2023-03-14

我是不是漏掉了什么?

PreparedStatement statement = this.prepareStatement(
    "WITH temp AS (" +
    "    SELECT id" +
    "    FROM mytable " +
    "    LIMIT 5 "
    ") " +
    "UPDATE mytable " +
    "SET updated = NOW() " +
    "FROM temp " +
    "WHERE temp.id = mytable.id " +
    "RETURNING mytable.data"
);

boolean hasResult = statement.execute();

if (!hasResult) {
    hasResult = statement.getMoreResults();
    // hasResult is still false
    // statement.getResultSet() still returns null
} else {
    // statement.getUpdateCount() returns the correct count of updated rows
}

共有1个答案

岑俊弼
2023-03-14

execute()的返回代码指示是否有立即可用的结果。

getMoreResults()告诉您,在处理通过execute()返回值指示的第一个结果集之后,是否还有其他结果集。

因此,以下内容将与UPDATE语句一起使用:

boolean hasResult = statement.execute();
if (hasResult) {
  ResultSet rs = statement.getResultSet();
  ... process the result ...
}
boolean hasResult = statement.execute();
while (hasResult) {
  ResultSet rs = statement.getResultSet();
  .... process the result ...

  // check if there is another one
  hasResult = statement.getMoreResults();
}
 类似资料:
  • 我对Mongoose/Mongo和node非常陌生。js,所以我怀疑这只是我的误解,但是。。。 下面的代码示例是最小的失败示例,而不是我的用例。 这会导致以下错误:将更新应用于文档{_id: ObjectId('54647402cb955748153ea782'),...}后,发现(不可变)字段'_id'已更改为_id: ObjectId('546d9e0e539ed9ec102348f9') 为

  • 我对使用java从web获取java非常陌生,我遇到了一个问题。我正在解析一个网站(Flightradar24.com)中的JSON,并将JSON中的数据保存到CSV文件中。然而,JSON中的值会不时更新,所以每当我再次尝试解析JSON文件时,更新的值都不会保存。例如,如果我有此条目 我想得到更新,这将是: 然而,我唯一能做的就是一遍又一遍地获取相同的条目,而不更新值。我正在使用线程。sleep(

  • 客户表中的余额分为:储值余额和盈利余额 要求下单时订单金额优先从储值余额中扣除,其次盈利余额扣除 扣除储值余额,如返回的balance小于0为待扣除金额,说明还需要扣除盈利余额: <update id="deductBalance" parameterType="com.pay.business.domain.CustomDO" > <!-- BEFORE:更新语句执行前执行selectKe

  • 问题内容: 我试图在扭曲的python中结合这两个查询: 和: 进入单个查询。有可能这样做吗? 我尝试将SELECT放在子查询中,但我不认为整个查询都会返回我想要的内容。 有没有办法做到这一点?(甚至更好,没有子查询)还是只需要坚持两个查询? 谢谢, 泉 问题答案: 您不能直接合并这些查询。但是您可以编写一个存储过程来执行两个查询。例:

  • 我正在创建一个递归导航迷宫的程序。代码: 然而,每当我到达死胡同时,它都不会回溯。当我调试时,它表明当程序从递归或“回溯”返回时,我的起始值专注于停留在我的死胡同空间。 例如: 9是我的出发点。2是我的退出。4是我的道路。1 表示墙壁。当我到达一个死胡同时(在本例中为第 7 行,第 2 列)。我的立场是等于整个程序其余部分的死胡同空间。这是为什么呢?