Exécution d'opérations par lot

Pour améliorer les performances lors de la réalisation de mises à jour multiples d'une base de données SQL Server, le pilote JDBC Microsoft SQL Server 2005 offre la possibilité de soumettre plusieurs mises à jour comme un seul travail, appelé également lot.

Les classes SQLServerStatement, SQLServerPreparedStatement et SQLServerCallableStatement peuvent toutes être utilisées pour soumettre des mises à jour par lot. La méthode addBatch permet d'ajouter une commande. La méthode clearBatch permet d'effacer la liste des commandes. La méthode executeBatch permet de soumettre toutes les commandes pour traitement. Seules des instructions DDL (Data Definition Language, langage de définition de données) et DML (Data Manipulation Language, langage de manipulation de données) qui retournent un seul nombre de mises à jour peuvent être exécutées dans un lot.

La méthode executeBatch retourne un tableau de valeurs int correspondant au nombre de mises à jour de chaque commande. En cas d'échec de l'une des commandes, une BatchUpdateException est générée et vous devez utiliser la méthode getUpdateCounts de la classe BatchUpdateException pour extraire le tableau de nombres de mises à jour. En cas d'échec d'une commande, le pilote continue à traiter les commandes restantes. Toutefois, si une commande contient une erreur de syntaxe, les instructions contenues dans le lot échouent.

NoteRemarque :

Si vous ne devez pas utiliser un certain nombre de mises à jour, vous pouvez d'abord émettre une instruction SET NOCOUNT ON vers SQL Server. Ceci réduira le trafic réseau et améliorera les performances de votre application.

Par exemple, créez la table suivante dans l'exemple de base de données SQL Server 2005 AdventureWorks :

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

Dans l'exemple suivant, une connexion ouverte à l'exemple de base de données AdventureWorks est transmise à la fonction, la méthode addBatch est utilisée pour créer les instructions à exécuter et la méthode executeBatch est appelée pour soumettre le lot à la base de données.

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();
   }
}

Voir aussi

Autres ressources

Utilisation d'instructions avec le pilote JDBC