Я использую Anorm для запросов к базе данных в приложении Play. Я прошел через некоторые уроки, которые даны, что SQL(....).execute()
возвращает Boolean
, если исполнение было успешным. Я протестировал метод, но он всегда возвращался false
(не знаю, когда он вернет true: /). Я также пробовал SQL(...).executeInsert()
, но в таблице нет столбца «auto-increment», поэтому проблема все еще существует. Пожалуйста, помогите мне, если есть какое-либо решение (любая расширенная версия метода .execute() или другого) с кем-либо.Как узнать, что если запрос вставки был успешным в анормах?
Вот часть моего кода, который неисправный из-за неожиданное возвращение ...
def addSuggestion(sessionId: BigInteger, suggestionId: BigInteger) = {
DB.withConnection { implicit c =>
if (!SQL("insert into user_suggestion_" + sessionId + " values (" + suggestionId + ",1,0,0)").execute()) {
SQL("update user_suggestion_" + sessionId + " set count=(count+1) where user_id=" + suggestionId).executeUpdate()
}
}
}
Запрос обновления должен работать только тогда, когда вставка не удается (из-за какие-либо ограничения и т.д.). Есть ли другая функция/альтернатива? Пожалуйста помоги. Заранее спасибо.
Спасибо Johanandren .. Теперь я действительно понял эту функцию. Итак, нужно ли мне проверять успешную установку через обработку исключений? Нет ли простого способа? –
Думайте об этом как о проверке исключительного поведения при обработке исключений :). Проверьте scala.util.Try, это может дать вам более удобный способ обработки этого исключения, чем попытка try-catch. – johanandren