Re: Problem with transactions - Mailing list pgsql-jdbc

From Dave Cramer
Subject Re: Problem with transactions
Date
Msg-id 1084392178.1536.188.camel@localhost.localdomain
Whole thread Raw
In response to Problem with transactions  (Marcos Truchado <mtruchado@telefonica.net>)
List pgsql-jdbc
Sequences do not rollback, so it is not a bug


Dave
On Wed, 2004-05-12 at 15:22, Marcos Truchado wrote:
> Hi:
>
> this is normal or it's a bug?
>
> please, rewrite the line 98 to fit your database:
>
> DriverManager.getConnection("jdbc:postgresql://yourIp:yourPort/yourDataBaseName?charSet=yourCharSet",
> "yourUser", "yourPassword");
>
>
> !DSPAM:40a27f82120464098919018!
>
> ______________________________________________________________________
> import java.sql.*;
> import java.io.IOException;
> import javax.swing.JOptionPane;
>
> class Problem {
>
>     public static void main(String [] arguments) {
>     Connection conn = null;
>     try {
>         conn = getConn();
>
>         Statement stat = conn.createStatement();
>
>         String sequenceTest = "CREATE SEQUENCE sequence_test";
>         String table1 = "CREATE TABLE test (id INTEGER DEFAULT NEXTVAL('sequence_test') NOT NULL, value
VARCHAR(100))";
>
>         //create sequence and table for testing purposes
>         stat.executeUpdate(sequenceTest);
>         stat.executeUpdate(table1);
>
>         //let's go with the problem
>
>         boolean autoCommit = conn.getAutoCommit();
>         conn.setAutoCommit(false);
>
>         String insert1 = "INSERT INTO test(value) VALUES('this will have id1')";
>         String insert2 = "INSERT INTO test(value) VALUES('this will have id2')";
>         String insert3 = "INSERT INTO test(value, other) VALUES('this will have id3', 'this will cause an error')";
//<=error 
>
>         stat.executeUpdate(insert1);
>         stat.executeUpdate(insert2);
>         stat.executeUpdate(insert3);
>
>         conn.setAutoCommit(autoCommit);
>
>     } catch(SQLException e) {
>         try {
>         conn.rollback();
>         conn.close();
>         System.out.println("rollback done");
>         } catch(SQLException SQLe) {
>         e.printStackTrace();
>         SQLe.printStackTrace();
>         System.out.println("rollback isn't done :'(");
>         }
>         System.out.println("Error code: " + e.getErrorCode());
>         System.out.println("Error messague: " + e.getMessage());
>         System.out.println("Localized messague: " + e.getLocalizedMessage());
>         System.out.println("Description: " + e);
>         System.out.println();
>         System.out.println("<-  ->");
>         System.out.println();
>         e.printStackTrace();
>         System.out.println();
>         System.out.println("<-  ->");
>         System.out.println();
>     } catch(IOException ioe) {
>         ioe.printStackTrace();
>         System.out.println("Imput/output error");
>     }
>
>
>     try {
>         conn = getConn();
>         Statement stat = conn.createStatement();
>         String insert1 = "INSERT INTO test(value) VALUES('this will have id1')";
>         stat.executeUpdate(insert1);
>         stat.close();
>
>         PreparedStatement pstmt = conn.prepareStatement("SELECT CURRVAL('sequence_test') AS CURRVAL");
>         ResultSet rs = pstmt.executeQuery();
>         if (rs.first()) {
>         System.out.println("Current sequence value is: " + rs.getInt("CURRVAL"));
>         System.out.println("According with the code, rollback was called, so this new row should have 1");
>         } else {
>         System.out.println("FATAL");
>         System.out.println("FATAL");
>         System.out.println("FATAL");
>         System.out.println("cannot reach the sequence");
>         return;
>         }
>         rs.close();
>         pstmt.close();
>         conn.close();
>     } catch(SQLException e) {
>         e.printStackTrace();
>     } catch(IOException ioe) {
>         ioe.printStackTrace();
>     }
>     }
>
>     public static Connection getConn() throws SQLException, IOException {
>
>     try {
>
>         Class.forName("org.postgresql.Driver").newInstance();
>
>         //return
DriverManager.getConnection("jdbc:postgresql://yourIp:yourPort/yourDataBaseName?charSet=yourCharSet","yourUser",
"yourPassword");
>
>     } catch(ClassNotFoundException e) {
>         e.printStackTrace();
>     } catch(IllegalAccessException ee) {
>         ee.printStackTrace();
>     } catch(InstantiationException eee) {
>         eee.printStackTrace();
>     }
>
>     catch(SQLException e) {
>         JOptionPane.showMessageDialog(null,
>                       "can't connect with database");
>
>     }
>
>     return null;
>     }
>
> }
>
>
> !DSPAM:40a27f82120464098919018!
>
> ______________________________________________________________________
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
>
>
> !DSPAM:40a27f82120464098919018!
--
Dave Cramer
519 939 0336
ICQ # 14675561


pgsql-jdbc by date:

Previous
From: Marcos Truchado
Date:
Subject: Problem with transactions
Next
From: Reynir Þór Hübner
Date:
Subject: java.net.SocketException: Broken pipe