English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemples de JDBC setSavepoint et releaseSavepoint

Voici un exemple, qui utilisesetSavepointetrollbackIl est décrit dans le tutoriel sur les transactions.

Ce code d'exemple est écrit en fonction des paramètres d'environnement et de base de données des quelques chapitres précédents.

Copiez et collez l'exemple suivant dans JDBCExample.java, puis compilez et exécutez :

//Étape1.Importer les packages nécessaires
import java.sql.*;
public class JDBCExample {
   // Nom du pilote JDBC et URL de la base de données
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //  Informations de connexion à la base de données
   static final String USER = "username";
   static final String PASS = "password";
   
public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
      //Étape2:Enregistrer le pilote JDBC
      Class.forName("com.mysql.jdbc.Driver");
      //Étape3:Établir la connexion
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //Étape4:Définir le commit automatique sur false.
      conn.setAutoCommit(false);
      //Étape5:Exécuter la requête pour supprimer la déclaration
      // Paramètres nécessaires pour l'exemple de RS.
      System.out.println("Creating statement...");
      stmt = conn.createStatement();
	  //Étape6:Lister maintenant tous les enregistrements disponibles.
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("Liste du jeu de résultats pour référence....");
      printRs(rs);
      // Étape7:Supprimer l'ID supérieur à104de la ligne
      // Mais avant de le faire, il faut d'abord sauvegarder.
      Point de sauvegarde1 = conn.setSavepoint("ROWS_DELETED_1");
      System.out.println("Suppression de la ligne....");
      String SQL = "DELETE FROM Employees" +
                   "WHERE ID = 110";
      stmt.executeUpdate(SQL);  
      // Dommage... Nous avons supprimé un employé trop incorrect !
      //Étape8:À la sauvegarde2Puis annuler les modifications.
      conn.rollback(savepoint1);
    // Étape9:Supprimer l'ID supérieur à104de la ligne
      // Mais avant de le faire, il faut d'abord sauvegarder.
      Point de sauvegarde2 = conn.setSavepoint("ROWS_DELETED_2");
      System.out.println("Suppression de la ligne....");
      SQL = "DELETE FROM Employees" +
                   "WHERE ID = 95";
      stmt.executeUpdate(SQL);  
	  //Étape10:Lister maintenant tous les enregistrements disponibles.
      sql = "SELECT id, first, last, age FROM Employees";
      rs = stmt.executeQuery(sql);
      System.out.println("Liste du jeu de résultats pour référence....");
      printRs(rs);
      //Étape10:Nettoyer l'environnement
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //Gérer les erreurs JDBC
      se.printStackTrace();
      // Si une erreur se produit, annuler les modifications.
      System.out.println("Retour en arrière des données ici....");
	  try{
		 if(conn!=null)
            conn.rollback();
      }catch(SQLException se2){
         se2.printStackTrace();
      }//Fin de try
   }catch(Exception e){
      //Gérer l'erreur de Class.forName
      e.printStackTrace();
   }finally{
      //Pour fermer les ressources
      try{
         if(stmt!=null)
            stmt.close();
      }catch(SQLException se2){
      
      }
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }
   }//Fin de try
   System.out.println("Au revoir !");
}//Fin de main
   public static void printRs(ResultSet rs) throws SQLException{
      //Assurer que nous commençons par la première ligne
      rs.beforeFirst();
      while(rs.next()){
         //Recherche par nom de colonne
         int id = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
         //Affichage des valeurs
         System.out.print("ID: " + id);
         System.out.print(", Âge: " + age);
         System.out.print(", Premier: " + first);
         System.out.println(", Dernier: " + last);
     }
     System.out.println();
   }//Fin de printRs()
}//Fin de JDBCExample

Maintenant, compilons l'exemple ci-dessus, comme suit :

C:\>javac JDBCExample.java
C:\>

Au moment de l'exécutionJDBCExampleIl produira les résultats suivants-

C:\>java JDBCExample
Connexion à la base de données...
Création de l'instruction...
Liste de l'ensemble des résultats pour référence....
ID: 95, Âge: 20, Premier: Sima, Dernier: Chug
ID: 100, Âge: 18, Premier: Zara, Dernier: Ali
ID: 101, Âge: 25, Premier: Mahnaz, Dernier: Fatma
ID: 102, Âge: 30, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 30, Premier: Sumit, Dernier: Mittal
ID: 110, Âge: 20, Premier: Sima, Dernier: Chug
Suppression de la ligne....
Suppression de la ligne....
Liste de l'ensemble des résultats pour référence....
ID: 100, Âge: 18, Premier: Zara, Dernier: Ali
ID: 101, Âge: 25, Premier: Mahnaz, Dernier: Fatma
ID: 102, Âge: 30, Premier: Zaid, Dernier: Khan
ID: 103, Âge: 30, Premier: Sumit, Dernier: Mittal
ID: 110, Âge: 20, Premier: Sima, Dernier: Chug
Au revoir !
C:\>