我在我的Play應用程序中使用Anorm進行數據庫查詢。我經歷了一些教程,如果執行成功,SQL(....).execute()
返回Boolean
。我測試了這個方法,但它總是返回false
(不知道它何時返回true:/)。我也嘗試過SQL(...).executeInsert()
,但表中沒有任何'自動增量'列,所以問題依然存在。如果有任何解決方案(任何擴展版本的'.execute()'方法或其他),請幫助我。如何知道如果插入查詢在anorm中成功?
這裏是我的代碼失敗由於意外收益的一部分......
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