Ok, I know the difference between commit and rollback and what these operations are supposed to do. However, I am not certain what to do in cases where I can achieve the same behavior when using commit(), rollback() and/or do nothing.

For instance, let's say I have the following code which executes a query without writing to db: I am working on an application which communicates with SQLite database.

try {
  doSomeQuery()
  // b) success
} catch (SQLException e) {
  // a) failed (because of exception)
}

Or even more interesting, consider the following code, which deletes a single row:

try {
  if (deleteById(2))
    // a) delete successful (1 row deleted)
  else
    // b) delete unsuccessful (0 row deleted, no errors)
} catch (SQLException e) {
  // c) delete failed (because of an error (possibly due to constraint violation in DB))
}

Observe that from a semantic standpoint, doing commit or rollback in cases b) and c) result in the same behavior.

Generally, there are several choices to do inside each case (a, b, c):

  • commit
  • rollback
  • do nothing

Are there any guidelines or performance benefits of choosing a particular operation? What is the right way?

Note: Assume that auto-commit is disabled.

Edit
Report