Как получить значение из обновления executeUpdate ИЛИ в java?

Я пытаюсь получить возвращаемые данные из обновления 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 результата, которые я хочу установить.

используйте executeUpdate(); для обновлений, вставок и удалений вместо executeQuery()

isaace 26.07.2019 19:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
1 504
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Поскольку вы пытаетесь обновить, в случае 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??

J.Carlos 26.07.2019 21:12

Вы получите количество затронутых строк, используя запрос на обновление.

Sambit 26.07.2019 21:18

Сначала выполните оператор обновления с ps.executeUpdate (), который возвращает целое число 0 или 1. Значение указывает, был ли выполнен оператор обновления или нет. После этого выполните запрос выбора, чтобы получить обновленные данные.

Пожалуйста, рассмотрите возможность добавления знаков препинания к вашему ответу для удобочитаемости.

slynagh 26.07.2019 20:48

Другие вопросы по теме