Esecuzione di operazioni batch

Download scaricare ildriver JDBC

Per garantire prestazioni migliori quando si eseguono più aggiornamenti di un database di SQL Server, Microsoft JDBC Driver per SQL Server consente di inviare più aggiornamenti come singola unità di lavoro, denominata anche batch.

Le classi SQLServerStatement, SQLServerPreparedStatement e SQLServerCallableStatement possono essere usate tutte per inviare aggiornamenti in blocco. Il metodo addBatch viene usato per aggiungere un comando. Il metodo clearBatch viene usato per cancellare l'elenco dei comandi. Il metodo executeBatch viene usato per inviare tutti i comandi per l'elaborazione. Possono essere eseguite come parte di un batch solo le istruzioni DDL (Data Definition Language) e DML (Data Manipulation Language) che restituiscono un semplice conteggio di aggiornamento.

Il metodo executeBatch restituisce una matrice di valori int che corrispondono al conteggio aggiornamenti di ogni comando. Se uno dei comandi ha esito negativo, viene generata un'eccezione BatchUpdateException ed è necessario usare il metodo getUpdateCounts della classe BatchUpdateException per recuperare la matrice del conteggio degli aggiornamenti. Se un comando non riesce, il driver continua a elaborare i comandi rimanenti. Tuttavia, se un comando contiene un errore di sintassi sarà impossibile eseguire le istruzioni del batch.

Nota

Se non è necessario usare i conteggi degli aggiornamenti, è possibile eseguire prima un'istruzione SET NOCOUNT ON in SQL Server. Il traffico di rete verrà ridotto e aumenteranno le prestazioni dell'applicazione.

Come esempio viene creata la tabella seguente nel database di esempio AdventureWorks:

CREATE TABLE TestTable   
   (Col1 int IDENTITY,   
    Col2 varchar(50),   
    Col3 int);  

Nell'esempio seguente viene passata alla funzione una connessione aperta al database di esempio AdventureWorks, il metodo addBatch viene usato per creare le istruzioni da eseguire e viene eseguita la chiamata al metodo executeBatch per inviare il batch al database.

public static void executeBatchUpdate(Connection con) {  
   try {  
      Statement stmt = con.createStatement();  
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('X', 100)");  
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Y', 200)");  
      stmt.addBatch("INSERT INTO TestTable (Col2, Col3) VALUES ('Z', 300)");  
      int[] updateCounts = stmt.executeBatch();  
      stmt.close();  
   }  
   catch (Exception e) {  
      e.printStackTrace();  
   }  
}  

Vedere anche

Uso delle istruzioni con il driver JDBC