Я пытаюсь получить возвращаемые данные из обновления postgresql. «Обновление» хорошо работает в сценарии БД, но в java у меня возникают некоторые проблемы: код зависает при выполнении запроса.
Я пытаюсь с помощью "PreparedStatament ps", "ResultSet rs=ps.executeQuery" и "if (rs.next)" получить данные из "возврата" в запросе, но похоже, что код туда не попал , потому что застрял именно в "ps.executeQuery".
Вот более или менее то, что я пытаюсь сделать:
String cVal = "";
ps=myConn.prepareStatement("UPDATE someTable SET aValue=? WHERE bValue=?
returning Cvalue");
ps.setInt(1,"aNewValue");
ps.setInt(2,"aID");
rs=ps.executeQuery();
if (rs.next()){
cVal=rs.GetString("Cvalue");
return true;
}else{
return false;
}
Я пытаюсь установить значения "RETURNING" для некоторых переменных. Есть 4 результата, которые я хочу установить.




Поскольку вы пытаетесь обновить, в случае PreparedStatement вы должны использовать метод executeUpdate().
Чтобы узнать больше о методах в Statement и PreparedStatment, проверьте ниже
https://docs.oracle.com/javase/8/docs/api/java/sql/PreparedStatement.html#executeUpdate--
Вы можете обратиться к примеру ниже. https://www.mkyong.com/jdbc/jdbc-preparestatement-example-update-a-record/
Я знаю, что executeUpdate возвращает 1 или 0, но как я могу получить значения из возвращаемого значения? есть ли какой-нибудь "rs.get..." только в executeUpdate??
Вы получите количество затронутых строк, используя запрос на обновление.
Сначала выполните оператор обновления с ps.executeUpdate (), который возвращает целое число 0 или 1. Значение указывает, был ли выполнен оператор обновления или нет. После этого выполните запрос выбора, чтобы получить обновленные данные.
Пожалуйста, рассмотрите возможность добавления знаков препинания к вашему ответу для удобочитаемости.
используйте
executeUpdate(); для обновлений, вставок и удалений вместоexecuteQuery()