oracle Jdbc оператор обновления возвращает ноль - PullRequest
1 голос
/ 28 марта 2012

Это касается оператора обновления SQL с использованием JDBC. На самом деле, я смотрю на некоторые проблемы, которые у нас были, и все они зависают в момент, когда оператор обновления возвратил ноль при попытке обновить определенную строку.

Теперь, чтобы прояснить ситуацию, СПЕЦИАЛЬНОЕ ЗАЯВЛЕНИЕ ОБ ОБНОВЛЕНИИ РЯДА ПЫТАЕТСЯ ОБНОВИТЬ В СУЩЕСТВУЮЩЕМУ СУЩЕСТВОВАНИИ в таблице. Так что нет никакой возможности записи не найден и, следовательно, нулевое обновление.

С учетом вышесказанного мой вопрос в том, видите ли вы или есть какая-либо другая возможность, когда обновление может вернуть ноль. Я использую драйвер Oracle JDBC. поэтому в oracle jdbc упоминается любой сценарий, в котором оператором обновления может быть возвращен ноль, кроме записи, которая не найдена.

Большое спасибо, Амир Мавия

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

Извините, я пока не знаю, как оставить комментарий, так что ...

Из Oracle:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html

Обратите внимание, что когда возвращаемое значение для executeUpdate равно 0, это может означать одно из двух:

* The statement executed was an update statement that affected zero rows.
* The statement executed was a DDL statement.

Так что может показаться, что оператор Update искажается так, как вы этого не ожидали. Я думаю, что это тот случай, когда исключение не было выброшено. Если это повторяется, вы сможете отслеживать SQL, отправленный на стороне сервера, и посмотреть, что вам не хватает.

0 голосов
/ 28 марта 2012

executeUpdate

int executeUpdate () выдает SQLException

Выполняет оператор SQL в этом объекте PreparedStatement, который должен быть оператором языка данных SQL (DML), например INSERT, UPDATE или DELETE; или оператор SQL, который ничего не возвращает, например оператор DDL.

Возвращает: либо (1) количество строк для операторов языка данных SQL (DML), либо (2) 0 для операторов SQL, которые ничего не возвращают Броски: SQLException - если ошибка доступа к базе данных происходит; этот метод вызывается для закрытого PreparedStatement или оператор SQL возвращает объект ResultSet

Просто сказать, что в документе указано:

"Обратите внимание, что когда возвращаемое значение для executeUpdate равно 0, это может означать одно из двух:

Выполненный оператор был оператором обновления, затрагивающим ноль строк. Выполненный оператор был оператором DDL. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...