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

Batch JDBC (Batch)

Il batch ti permette di raggruppare istruzioni SQL correlate in un batch e di inviarle al database con una singola chiamata.

Quando invii più istruzioni SQL al database in una volta, puoi ridurre i costi di comunicazione, migliorando così le prestazioni.

  • Il driver JDBC non deve supportare questa funzionalità. Dovresti utilizzare il metodo DatabaseMetaData.supportsBatchUpdates () per determinare se il database di destinazione supporta la gestione delle aggiornamenti in batch. Se il driver JDBC supporta questa funzionalità, il metodo restituisce true.

  • Statement, PreparedStatement e CallableStatement il metodo addBatch () viene utilizzato per aggiungere una singola istruzione al batch. executeBatch () viene utilizzato per iniziare l'esecuzione di tutte le istruzioni combinate.

  • executeBatch() restituisce un array di interi, in cui ogni elemento rappresenta il conteggio di aggiornamento della corrispondente statement di update.

  • Come puoi aggiungere statement alla batch per elaborarli, puoi anche rimuoverli utilizzando il metodo clearBatch(). Questo metodo rimuove tutti gli statement aggiunti con addBatch(). Tuttavia, non puoi selezionare gli statement da rimuovere.

Esegui batch utilizzando l'oggetto statement

Questa è la sequenza tipica di passaggi per utilizzare la batch con l'oggetto Statement-

  • Utilizzando questi duecreateStatement()Il metodo crea l'oggetto Statement.

  • Imposta l'auto-commit su false utilizzando setAutoCommit().

  • Aggiungi un numero illimitato di SQL statement alla batch utilizzando il metodo addBatch() sull'oggetto statement creato.

  • Esegui tutti gli SQL statement creati dall'oggetto statement utilizzando il metodo executeBatch().

  • Infine, utilizzarecommit()Invia tutte le modifiche.

Esempio

Il seguente segmento di codice fornisce un esempio di aggiornamento in batch utilizzando l'oggetto Statement-

// Crea l'oggetto statement
Statement stmt = conn.createStatement();
// Imposta l'auto-commit su false
conn.setAutoCommit(false);
//创建SQL语句
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(200,'Zia', 'Ali', 30)";
// Aggiungi gli SQL statement sopra alla batch
stmt.addBatch(SQL);
// Crea un altro SQL statement
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(201,'Raj', 'Kumar', 35)";
// Aggiungi gli SQL statement sopra alla batch
stmt.addBatch(SQL);
// Crea un altro SQL statement
String SQL = "UPDATE Employees SET age = 35 " +
             "WHERE id = 100";
// Aggiungi gli SQL statement sopra alla batch
stmt.addBatch(SQL);
// Crea un array int[] per salvare i valori restituiti
int[] count = stmt.executeBatch();
//明确提交语句以应用更改
conn.commit();

为了更好地理解,让我们研究代码示例批处理.

Esegui batch utilizzando l'oggetto PreparedStatement

Questa è la sequenza tipica di passaggi per utilizzare la batch con l'oggetto PreparedStatement-

  1. Crea SQL statement utilizzando placeholder.

  2. Crea un oggetto PreparedStatement utilizzando uno dei metodi PrepareStatement().

  3. Imposta l'auto-commit su false utilizzando setAutoCommit().

  4. Aggiungi il maggior numero possibile di SQL statement alla batch utilizzando il metodo addBatch() sull'oggetto statement creato.

  5. Esegui tutti gli SQL statement creati dall'oggetto statement utilizzando il metodo executeBatch().

  6. Infine, utilizzarecommit()Invia tutte le modifiche.

以下代码段提供了使用PrepareStatement对象进行批量更新的示例-

//创建SQL语句
String SQL = "INSERT INTO Employees (id, first, last, age) " +
             "VALUES(?, ?, ?, ?)";
//创建PrepareStatement对象
PreparedStatemen pstmt = conn.prepareStatement(SQL);
//将自动提交设置为false
conn.setAutoCommit(false);
//设置变量
pstmt.setInt(1, 400);
pstmt.setString(2, "Pappu");
pstmt.setString(3, "Singh");
pstmt.setInt(4, 33);
//将其添加到批
pstmt.addBatch();
//设置变量
pstmt.setInt(1, 401);
pstmt.setString(2, "Pawan");
pstmt.setString(3, "Singh");
pstmt.setInt(4, 31);
//将其添加到批
pstmt.addBatch();
//添加更多批
.
.
.
.
//创建一个int []来保存返回的值
int[] count = stmt.executeBatch();
//明确提交语句以应用更改
conn.commit();

为了更好地理解,让我们研究代码示例批处理.