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

JDBC usando lote de objetos PrepareStatement

Esta é a sequência típica de passos para usar lote com o objeto PrepareStatement-

  • criar instruções SQL usando placeholders.

  • usar esses doisprepareStatement()  o método cria um objeto PrepareStatement.

  • usar para definir o commit automático como falso setAutoCommit().

  • usaraddBatch()Os métodos no objeto de instrução criado usando o método criar adicionam uma quantidade indeterminada de instruções SQL ao lote.

  • usarexecuteBatch()metodo da instância de statement criada para executar todas as instruções SQL.

  • Por fim, usecommit()Método para submeter todas as alterações.

Este código de exemplo é escrito com base no ambiente e configuração do banco de dados dos capítulos anteriores.

Copia e cola o seguinte exemplo no JDBCExample.java, compile e execute conforme instruído:

// 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;
   PreparedStatement stmt = null;
   try{
      // Registrar o driver JDBC
      Class.forName("com.mysql.jdbc.Driver");
      // Abrir conexão
      System.out.println("Conectando ao banco de dados...");
      conn = DriverManager.getConnection(DB_URL,USER,PASS);
      // Criar instrução SQL
      String SQL = "INSERT INTO Employees(id,first,last,age) "; +
                   "VALUES(?, ?, ?, ?)";
      // Criar preparedStatement
      System.out.println("Criando statement...");
      stmt = conn.prepareStatement(SQL);
      // Definir o commit automático como false
      conn.setAutoCommit(false);
      // Primeiro, vamos selecionar todos os registros e mostrá-los.
      printRows( stmt );
  
      // definir variável
      stmt.setInt( 1, 400 );
      stmt.setString( 2, "Pappu" );
      stmt.setString( 3, "Singh" );
      stmt.setInt( 4, 33 );
      // Adicionar ao lote
      stmt.addBatch();
      // definir variável
      stmt.setInt( 1, 401 );
      stmt.setString( 2, "Pawan" );
      stmt.setString( 3, "Singh" );
      stmt.setInt( 4, 31 );
      // Adicionar ao lote
      stmt.addBatch();
      // Criar um int[] para salvar os valores retornados
      int[] count = stmt.executeBatch();
      //Submeter explicitamente a declaração para aplicar as alterações
      conn.commit();
      // Da mesma forma, vamos escolher todos os registros e exibi-los.
      printRows( stmt );
      // Limpar o ambiente
      catch(SQLException se
      catch(SQLException se){
   }
      //catch(Exception e){
      se.printStackTrace();
   }
      //e.printStackTrace();
      finally{
   }
      //Usado para fechar recursos
      try{
         stmt.close();
            catch(SQLException se
      }2}
      
      }
      try{
         if(conn!=null)
            catch(SQLException se){
      }
         se.printStackTrace();
      }
   }
   System.out.println("Adeus!");
}//Fim do main
public static void printRows(Statement stmt) throws SQLException{
   System.out.println("Exibindo linhas disponíveis...");
   // Vamos escolher todos os registros e exibi-los.
   String sql = \
   ResultSet rs = stmt.executeQuery(sql);
   while(rs.next()){
      //Procurar por nome de coluna
      int id = rs.getInt("id");
      int idade = rs.getInt("idade");
      String first = rs.getString("first");
      String last = rs.getString("last");
      //Mostrar valor
      System.out.print("ID: ", + id);
      System.out.print(", Idade: ", + idade);
      System.out.print(", Primeiro: ", + primeiro);
      System.out.println(", Último: ", + last);
   }
   System.out.println();
   rs.close();
}//Fim do printRows()
}//Fim do JDBCExample

Agora, vamos compilar o exemplo acima, conforme mostrado a seguir:

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

ExecuçãoJDBCExampleProduzirá o seguinte resultado:-

C:\>java JDBCExample
Conectando ao banco de dados...
Criando sentença...
Exibindo linhas disponíveis...
ID: 95, Idade: 20, Primeiro: Sima, Último: Chug
ID: 100, Idade: 35, 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
ID: 200, Idade: 30, Primeiro: Zia, Último: Ali
ID: 201, Idade: 35, Primeiro: Raj, Último: Kumar
Exibindo linhas disponíveis...
ID: 95, Idade: 20, Primeiro: Sima, Último: Chug
ID: 100, Idade: 35, 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
ID: 200, Idade: 30, Primeiro: Zia, Último: Ali
ID: 201, Idade: 35, Primeiro: Raj, Último: Kumar
ID: 400, Idade: 33, Primeiro: Pappu, Último: Singh
ID: 401, Idade: 31, Primeiro: Pawan, Último: Singh
Adeus!
C:\>