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

exemplo JDBC setSavepoint, releaseSavepoint

A seguir está um exemplo, o qual usasetSavepointerollbackFoi descrito no tutorial de transação.

Este código de exemplo é escrito com base nas configurações de ambiente e banco de dados dos capítulos anteriores.

Clique e cole o seguinte exemplo no JDBCExample.java, compile e execute conforme mostrado:

//Passo1.Importar os pacotes necessários
import java.sql.*;
public class JDBCExample {
   // Nome do driver JDBC e URL do banco de dados
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost/EMP";
   //  Credenciais do banco de dados
   static final String USER = "username";
   static final String PASS = "password";
   
public static void main(String[] args) {
   Connection conn = null;
   Statement stmt = null;
   try{
      //Passo2:Registrar o driver JDBC
      Class.forName("com.mysql.jdbc.Driver");
      //Passo3:Estabelecer conexão
      System.out.println("Conectando ao banco de dados...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      //Passo4:Definir o commit automático como false.
      conn.setAutoCommit(false);
      //Passo5:Executar a consulta para excluir a declaração
      // Parâmetros necessários para o exemplo de RS.
      System.out.println("Criando statement...");
      stmt = conn.createStatement();
	  //Passo6:Agora liste todos os registros disponíveis.
      String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);
      System.out.println("List result set for reference....");
      printRs(rs);
      // Passo7:Excluir o ID maior que104linha
      // Mas antes de fazer isso, você deve salvar um ponto.
      Ponto de salvamento1 = conn.setSavepoint("ROWS_DELETED_"1");
      System.out.println("Deleting row....");
      String SQL = "DELETE FROM Employees" +
                   "WHERE ID = 110";
      stmt.executeUpdate(SQL);  
      // Oh, não... Nós deletamos o funcionário errado!
      //Passo8:No ponto de salvamento2depois de desfazer as alterações.
      conn.rollback(savepoint1);
    // Passo9:Excluir o ID maior que104linha
      // Mas antes de fazer isso, você deve salvar um ponto.
      Ponto de salvamento2 = conn.setSavepoint("ROWS_DELETED_"2");
      System.out.println("Deleting row....");
      SQL = "DELETE FROM Employees" +
                   "WHERE ID = 95";
      stmt.executeUpdate(SQL);  
	  //Passo10:Agora liste todos os registros disponíveis.
      sql = "SELECT id, first, last, age FROM Employees";
      rs = stmt.executeQuery(sql);
      System.out.println("List result set for reference....");
      printRs(rs);
      //Passo10:Limpar ambiente
      rs.close();
      stmt.close();
      conn.close();
   }catch(SQLException se){
      //Tratar erro JDBC
      se.printStackTrace();
      // Se houver erro, reverta as alterações.
      System.out.println("Rolling back data here....");
	  try{
		 if(conn!=null)
            conn.rollback();
      }catch(SQLException se2){
         se2.printStackTrace();
      }//Fim do try
   }catch(Exception e){
      //Tratar erro de Class.forName
      e.printStackTrace();
   }finally{
      //Usado para fechar recursos
      try{
         if(stmt!=null)
            stmt.close();
      }catch(SQLException se2){
      
      }
      try{
         if(conn!=null)
            conn.close();
      }catch(SQLException se){
         se.printStackTrace();
      }
   }//Fim do try
   System.out.println("Goodbye!");
}//Fim do main
   public static void printRs(ResultSet rs) throws SQLException{
      //Certifique-se de que começamos pela primeira linha
      rs.beforeFirst();
      while(rs.next()){
         //Procurar por nome de coluna
         int id = rs.getInt("id");
         int age = rs.getInt("age");
         String first = rs.getString("first");
         String last = rs.getString("last");
         //Exibir valor
         System.out.print("ID: " + id);
         System.out.print(", Idade: " + age);
         System.out.print(", Primeiro: " + first);
         System.out.println(", Último: " + last);
     }
     System.out.println();
   }//Fim do printRs()
}//Fim do JDBCExample

Agora, vamos compilar o exemplo acima, conforme mostrado:

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

ExecuçãoJDBCExampleEle produzirá os seguintes resultados:-

C:\>java JDBCExample
Conectando ao banco de dados...
Criando sentença...
Listar conjunto de resultados para referência...
ID: 95, Idade: 20, Primeiro: Sima, Último: Chug
ID: 100, Idade: 18, Primeiro: Zara, Último: Ali
ID: 101, Idade: 25, Primeiro: Mahnaz, Último: Fatma
ID: 102, Idade: 30, Primeiro: Zaid, Último: Khan
ID: 103, Idade: 30, Primeiro: Sumit, Último: Mittal
ID: 110, Idade: 20, Primeiro: Sima, Último: Chug
Excluindo linha...
Excluindo linha...
Listar conjunto de resultados para referência...
ID: 100, Idade: 18, Primeiro: Zara, Último: Ali
ID: 101, Idade: 25, Primeiro: Mahnaz, Último: Fatma
ID: 102, Idade: 30, Primeiro: Zaid, Último: Khan
ID: 103, Idade: 30, Primeiro: Sumit, Último: Mittal
ID: 110, Idade: 20, Primeiro: Sima, Último: Chug
Adeus!
C:\>