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