Aracılığıyla paylaş


Toplu işlem gerçekleştirme

JDBC sürücüsünü indirin

SQL Server veritabanında birden çok güncelleştirme gerçekleştiğinde performansı artırmak için, SQL Server için Microsoft JDBC Sürücüsü birden çok güncelleştirmesi toplu iş olarak da adlandırılan tek bir iş birimi olarak gönderme olanağı sağlar.

SQLServerStatement, SQLServerPreparedStatement ve SQLServerCallableStatement sınıflarının tümü toplu güncelleştirmeleri göndermek için kullanılabilir. addBatch yöntemi bir komut eklemek için kullanılır. komut listesini temizlemek için clearBatch yöntemi kullanılır. executeBatch yöntemi, işlenmek üzere tüm komutları göndermek için kullanılır. Yalnızca basit bir güncelleştirme sayısı döndüren Veri Tanımlama Dili (DDL) ve Veri İşleme Dili (DML) deyimleri toplu iş kapsamında çalıştırılabilir.

executeBatch yöntemi, her komutun güncelleştirme sayısına karşılık gelen bir int değerleri dizisi döndürür. Komutlardan biri başarısız olursa bir BatchUpdateException oluşturulur ve güncelleştirme sayısı dizisini almak için BatchUpdateException sınıfının getUpdateCounts yöntemini kullanmanız gerekir. Bir komut başarısız olursa, sürücü kalan komutları işlemeye devam eder. Ancak, bir komutun söz dizimi hatası varsa, toplu işlemdeki deyimler başarısız olur.

Uyarı

Güncelleştirme sayılarını kullanmak zorunda değilseniz, önce SQL Server'a SET NOCOUNT ON deyimini yayımlayabilirsiniz. Bu, ağ trafiğini azaltır ve ayrıca uygulamanızın performansını artırır.

Örneğin, AdventureWorks2025 örnek veritabanında aşağıdaki tabloyu oluşturun:

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

Aşağıdaki örnekte, AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir, yürütülecek deyimleri oluşturmak için addBatch yöntemi kullanılır ve toplu işlemi veritabanına göndermek için executeBatch yöntemi çağrılır.

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

Ayrıca bakınız

JDBC sürücüsüyle deyimleri kullanma