¿Cómo crear un punto de guardado en JDBC?

Un objeto Savepoint se utiliza para guardar el estado actual de la base de datos que luego se puede revertir a ese estado de la base de datos. Los puntos de guardado son similares a las transacciones SQL y generalmente se revierten si algo sale mal dentro de la transacción actual. El método connection.setSavepoint() de la interfaz Connection en Java se usa para crear un objeto que hace referencia a un estado actual de la base de datos dentro de la transacción. El siguiente ejemplo muestra el uso de Savepoint y Rollback en la aplicación JDBC .

sintaxis

connection.setSavepoint()

Devoluciones: Devuelve un nuevo objeto Savepoint .

Excepciones: se genera SQLException si se produce un error de acceso a la base de datos, se llama a este método mientras se participa en una transacción distribuida, se llama a este método en una conexión cerrada o este objeto de conexión se encuentra actualmente en modo de confirmación automática. Se genera una excepción SQLFeatureNotSupportedException si el controlador JDBC no es compatible con este método.

Ejemplo

Java

// Java program to demonstrate how to make a save point
  
import java.io.*;
import java.sql.*;
  
class GFG {
    public static void main(String[] args)
    {
        // db credentials
        String jdbcEndpoint
            = "jdbc:mysql://localhost:3000/GEEKSFORGEEKS";
        String userid = "GFG";
        String password = "GEEKSFORGEEKS";
  
        // create a connection to db
        Connection connection = DriverManager.getConnection(
            jdbcEndpoint, userid, password);
  
        // construct a query
        Statement deleteStmt = connection.createStatement();
        String deleteQuery
            = "DELETE FROM USER WHERE AGE > 15";
  
        // Disable auto commit to connection
        connection.setAutoCommit(false);
  
        /*    Table USER
       +--------+---------+------------+
       | USR_ID | NAME    | AGE        |
       +--------+---------+------------+
       |      1 | GFG_1      | 10           |
       |      2 | GFG_2   | 20         |
       |      3 | GFG_3   | 25           |
       +--------+---------+------------+
       */
  
        // Create a savepoint object before executing the
        // deleteQuery
        Savepoint beforeDeleteSavepoint
            = connection.setSavepoint();
  
        // Executing the deleteQuery
        ResultSet res
            = deleteStmt.executeQuery(deleteQuery);
  
        /*    Table USER after executing deleteQuery
       +--------+---------+------------+
       | USR_ID | NAME    | AGE        |
       +--------+---------+------------+
       |      1 | GFG_1      | 10           |
       +--------+---------+------------+
       */
  
        // Rollback to our beforeDeleteSavepoint
        connection.rollback(beforeDeleteSavepoint);
        connection.commit();
  
        /*    Table USER after rollback
        +--------+---------+------------+
        | USR_ID | NAME    | AGE        |
        +--------+---------+------------+
        |      1 | GFG_1   | 10            |
        |      2 | GFG_2   | 20          |
        |      3 | GFG_3   | 25            |
        +--------+---------+------------+
        */
    }
}

savepoint in a table

Publicación traducida automáticamente

Artículo escrito por pragup y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *