It is true that LiveCycle 8.2's JDBC service has on built-in exception handling. This has been remedied in 9.0 as there are now several exception types that can be handled.
If I understand correctly, your trouble comes with the lack of transaction management around the existing JDBC service within LiveCycle. To this I can only recommend that any SQL statements needing to be run with transaction management be done so within an executeScript service. I have, on many, many occasions, utilized this service to write some custom code using the Statement and/or PreparedStatement classes to handle any database interactions.
In addition to the above, it seems as though you would like to leverage the JNDI lookup capability of LiveCycle's JDBC service so you can specify a data source name as opposed to having to establish your own connection. This too can be handled within the executeScript service via custom code. As an example, the following code, when dropped in an executeScript service, will establish a connection to an Oracle database via JNDI lookup:
InitialContext ctx = new InitialContext();
String sDataSource = "YOUR DATA SOURCE NAME HERE";
Connection conn = ((DataSource)ctx.lookup(sDataSource)).getConnection();
org.jboss.resource.adapter.jdbc.WrappedConnection oWConn = (WrappedConnection) conn;
OracleConnection oConn = oWConn.getUnderlyingConnection();
From that point forward, you can simply leverage the PreparedStatement and/or Statement classes for any statements.
Please do let me know if you have any questions.
Cardinal Solutions Group