If the statement to executeSql() is invalid, then an exception will be raised immediately, which can be caught by wrapping the call to executeSql() with an exception handler. If there is an error in the course of executing the statement, it will be exposed by the errorCode in the callback. If there is no such error, the callback will be executed in the context of an implicit database transaction. This would appear to leave no place from which to detect an error committing the transaction. There is also no place to hang code to execute when the transaction is known to be successful.
-scott
