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