Ответ 1
вы можете добиться этого. В следующем примере используются команды addBatch и executeBatch для выполнения нескольких команд SQL.
Пакетная обработка позволяет группировать связанные операторы SQL в пакет и отправлять их с одним вызовом в базу данных. ссылка
Когда вы отправляете сразу несколько операторов SQL в базу данных, вы уменьшаете объем служебных данных связи, тем самым повышая производительность.
- Драйверы JDBC не обязаны поддерживать эту функцию. Вы должны использовать метод
DatabaseMetaData.supportsBatchUpdates()
, чтобы определить, поддерживает ли целевая база данных обработку пакетного обновления. Метод возвращает true, если ваш драйвер JDBC поддерживает эту функцию. - addBatch() метод Statement, PreparedStatement и CallableStatement используется для добавления отдельных операторов к партии.
executeBatch()
используется для запуска всех операторов, сгруппированных вместе. - executeBatch() возвращает массив целых чисел, и каждый элемент массива представляет количество обновлений для соответствующего оператора обновления.
- Так же, как вы можете добавлять инструкции в пакет для обработки, вы можете удалить их с помощью clearBatch(). Этот метод удаляет все заявления, добавленные с помощью метода
addBatch()
. Однако вы не можете выборочно выбирать, какой оператор удалить.
Пример:
import java.sql.*;
public class jdbcConn {
public static void main(String[] args) throws Exception{
Class.forName("org.apache.derby.jdbc.ClientDriver");
Connection con = DriverManager.getConnection
("jdbc:derby://localhost:1527/testDb","name","pass");
Statement stmt = con.createStatement
(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String insertEmp1 = "insert into emp values
(10,'jay','trainee')";
String insertEmp2 = "insert into emp values
(11,'jayes','trainee')";
String insertEmp3 = "insert into emp values
(12,'shail','trainee')";
con.setAutoCommit(false);
stmt.addBatch(insertEmp1);//inserting Query in stmt
stmt.addBatch(insertEmp2);
stmt.addBatch(insertEmp3);
ResultSet rs = stmt.executeQuery("select * from emp");
rs.last();
System.out.println("rows before batch execution= "
+ rs.getRow());
stmt.executeBatch();
con.commit();
System.out.println("Batch executed");
rs = stmt.executeQuery("select * from emp");
rs.last();
System.out.println("rows after batch execution= "
+ rs.getRow());
}
}
обратитесь http://www.tutorialspoint.com/javaexamples/jdbc_executebatch.htm