Sto usando Anorm per le query del database nella mia applicazione Play. Sono passato attraverso alcuni tutorial che è dato che SQL(....).execute()
restituisce Boolean
se l'esecuzione era riuscita. Ho provato il metodo, ma ha sempre restituito false
(non so quando restituisce true: /). Ho anche provato SQL(...).executeInsert()
ma non c'è alcuna colonna di "auto-incremento" nella tabella, quindi il problema esiste ancora. Per favore aiutatemi se c'è qualche soluzione (qualsiasi versione espansa del metodo '.execute()' o altro) con chiunque.Come sapere se una query di inserimento era riuscita in anorm?
Ecco una parte del mio codice che sta fallendo a causa di inaspettato ritorno ...
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()
}
}
}
La query di aggiornamento deve essere eseguito solo quando l'inserimento fallisce (a causa di qualsiasi vincolo, ecc). C'è qualche altra funzione/alternativa? Per favore aiuto. Grazie in anticipo.
Grazie Johanandren .. Ora ho effettivamente capito la funzione. Quindi, devo verificare il corretto inserimento tramite Exception Handling? Non c'è un modo semplice? –
Pensa a come controllare un comportamento eccezionale con la gestione delle eccezioni :). Controlla scala.util.Try, potrebbe darti un modo migliore di gestire quell'eccezione rispetto a un try-catch. – johanandren