From: | "Ryan Chambers" <ryan(at)squaretrade(dot)com> |
---|---|
To: | <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | JDBC and transactions |
Date: | 2002-04-23 20:23:17 |
Message-ID: | NEBBICFOPMHJEAGDAAIHKEKDDLAA.ryan@squaretrade.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
Hi
I'm trying to figure out how to use transactions with JDBC and PostGresql,
without much success. In particular, I can't figure out how to mark the
start of a transaction and how to do a rollback.
I'm iterating through a list of objects and I insert them into the DB one by
one. However, it is possible to get a NoSuchElement runtime exception while
going through the list. If this happens, I want to rollback all the previous
inserts.
The code/pseudo-code looks like this.
Connection conn = // get the connection
conn.setAutoCommit(false);
boolean rollBack = false;
while(myList.hasNext()) {
MyObject obj = null;
try {
obj = (MyObject)myList.next();
}
catch(NoSuchElementException e) {
rollBack = true;
break;
}
try {
persistToDB(conn, obj);
}
catch(SQLException e) {
rollBack = true;
break;
}
}
if(rollBack) {
try {
conn.rollback();
}
catch(SQLException e) {}
}
else {
try {
conn.commit();
}
catch(SQLException e) {}
}
conn.close();
I run this code and, in order to test it, deliberately throw a
NoSuchElementException. My code correctly detects this and calls the
rollback method on the connection. But when I look in the database, the rows
before the exception have been inserted, and the rollback hasn't done
anything. So how do I specify the start of the transaction? I've even tried
executing Statements and PreparedStatements with the query "begin", trying
to emulate the PostGresql "begin" syntax, but this doesn't work either. I
know the syntax of the statements I use to persist the object are good, and
I'm not seeing any exceptions when I do any of the SQL commands. (I ignore
some of the exceptions because these haven't caused my any problems).
Has anybody successfully used the rollback method for a group of SQL
commands using the PostGresql JDBC driver?
Thanks
Ryan
From | Date | Subject | |
---|---|---|---|
Next Message | Dave Cramer | 2002-04-23 20:48:11 | Re: JDBC and transactions |
Previous Message | Bruce Momjian | 2002-04-23 18:35:54 | Re: [PATCHES] patch for ResultSet.java |