English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Пакет позволяет вам группировать связанные SQL-предложения в пакет и提交 их с помощью одного вызова базы данных.
Когда вы отправляете несколько SQL-предложений в базу данных за один раз, можно уменьшить затраты на коммуникацию, что улучшает производительность.
Драйвер JDBC не требует поддержки этой функции. Вы должны использовать метод DatabaseMetaData.supportsBatchUpdates () для определения, поддерживает ли целевая база данных обработку пакетных обновлений. Если драйвер JDBC поддерживает эту функцию, метод возвращает true.
Методы addBatch () Statement, PreparedStatement и CallableStatement используются для добавления отдельных предложений в пакет. Метод executeBatch () используется для начала выполнения всех объединенных предложений в пакете.
executeBatch() возвращает массив целых чисел, каждый элемент которого представляет счетчик обновлений соответствующего запроса update.
Как и добавление запросов в пакет для обработки, вы можете использовать метод clearBatch () для их удаления. Этот метод удаляет все запросы, добавленные с помощью метода addBatch (). Однако, выбрать запросы для удаления нельзя.
Это пример последовательности шагов для использования пакетов с объектом Statement:
Используйте эти дваcreateStatement()Метод создает объект Statement.
Используйте setAutoCommit () для установки auto-commit в false.
Используйте метод addBatch () для добавления любого количества SQL-запросов в пакет на созданном объекте запроса.
Используйте метод executeBatch () для выполнения всех SQL-запросов на созданном объекте запроса.
В конце концов, используйтеcommit()Метод подает все изменения.
Следующий фрагмент кода предоставляет пример использования объекта Statement для пакетного обновления
// Создайте объект запроса Statement stmt = conn.createStatement(); // Установите автоматическую подачу в false conn.setAutoCommit(false); //Создать SQL-запрос String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(200,'Zia', 'Ali', 30)"; // Добавьте上面的 SQL-запрос в пакет. stmt.addBatch(SQL); // Создайте еще один SQL-запрос String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(201,'Raj', 'Kumar', 35)"; // Добавьте上面的 SQL-запрос в пакет. stmt.addBatch(SQL); // Создайте еще один SQL-запрос String SQL = "UPDATE Employees SET age = 35 " + "WHERE id = 100"; // Добавьте上面的 SQL-запрос в пакет. stmt.addBatch(SQL); // Создайте int [] для хранения возвращаемых значений int[] count = stmt.executeBatch(); //Ясно указать команду для применения изменений conn.commit();
Чтобы лучше понять, давайте рассмотримПример кода пакетной обработки.
Это пример последовательности шагов для использования пакетов с объектом PrepareStatement:
Используйте占位щики для создания SQL-запросов.
Используйте любой метод PrepareStatement() для создания объекта PrepareStatement.
Используйте setAutoCommit () для установки auto-commit в false.
Используйте метод addBatch () для добавления как можно большего количества SQL-запросов в пакет.
Используйте метод executeBatch () для выполнения всех SQL-запросов на созданном объекте запроса.
В конце концов, используйтеcommit()Метод подает все изменения.
Следующий фрагмент кода предоставляет пример пакетного обновления с использованием объекта PreparedStatemen-
//Создать SQL-запрос String SQL = "INSERT INTO Employees (id, first, last, age) " + "VALUES(?, ?, ?, ?)"; //Создать объект PreparedStatemen 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();
Чтобы лучше понять, давайте рассмотримПример кода пакетной обработки.