Home » Tutti gli Articoli » Java » Effettuare un operazione di commit o rollback

Ads Link

Menu Soluzioni

Ads

 
Effettuare un operazione di commit o rollback PDF Stampa E-mail
Scritto da Administrator   
Venerdì 04 Marzo 2011 11:44

Java - Effettuare un operazione di commit o rollback

Il metodo seguente mostra come effettuare un operazione di commit o rollback. Quando si eseguono comandi di gestione in database come inserire (insert), aggiornare (update) o cancellare (delete) record, si potrebbero verificare errori, a causa di dati non validi. Per proteggere l'integrità dei nostri dati, dobbiamo eseguire il comando di rollback.

package it.soluzionijava.sql;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TransactionRollbackExample {
    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost/testdb";
        String username = "root";
        String password = "";

        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, username, password);
            conn.setAutoCommit(false);

            StringBuilder sb = new StringBuilder("INSERT INTO orders (username, order_date) " +
                    "VALUES ('javaduke', '2007-12-13')");
            Statement orderStmt = conn.createStatement();
            orderStmt.execute(sb.toString(), Statement.RETURN_GENERATED_KEYS);

            ResultSet keys = orderStmt.getGeneratedKeys();
            int id = 1;
            while (keys.next()) {
                id = keys.getInt(1);                
            }

            String insertDetail = "INSERT INTO order_details (order_id, product_id, quantity, price) " +
                    "VALUES (?, ?, ?, ?)";
            PreparedStatement detailStmt = conn.prepareStatement(insertDetail);
            detailStmt.setInt(1, id);
            detailStmt.setString(2, "P0000001");
            detailStmt.setInt(3, 10);
            detailStmt.setDouble(4, 100);
            detailStmt.execute();

            //
            // Commit transaction to mark it as a success database operation
            //
            conn.commit();
            System.out.println("Transaction commit...");
        } catch (SQLException e) {
            //
            // Rollback any database transaction due to exception occured
            //
            if (conn != null) {
                conn.rollback();
                System.out.println("Connection rollback...");
            }
            e.printStackTrace();
        } finally {
            if (conn != null && !conn.isClosed()) {
                conn.close();
            }
        }
    }
}

 

Condividi
 

Commenti  

 
0 #1 profile 2018-11-02 15:26
Need cheap hosting? Try webhosting1st, just $10 for an year.

Citazione
 

Aggiungi commento


Codice di sicurezza
Aggiorna

Questo sito utilizza i cookie e tecnologie simili per consentire la corretta navigazione. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information