jdbc
Uttalande parti
Sök…
Introduktion
java.sql.Statement
) eller ett enda uttalande med flera uppsättningar av parametervärden (med en java.sql.PreparedStatement
).
Anmärkningar
Uttalande-batchning tillåter ett program att samla in relaterat uttalande, eller i fallet med förberedda uttalanden relaterade parametervärdeuppsättningar, och skicka dem till databaseservern som en enda exekvering.
Fördelarna med uttalande batchning kan inkludera förbättrad prestanda. Om och hur dessa prestationsfördelar uppnås beror på drivrutinen och databasstödet, men de inkluderar:
- Skicka alla uttalanden (eller alla värdesätt) i ett kommando
- Omskrivning av uttalanden så att de kan köras som ett stort uttalande
Batchinsättning med PreparedStatement
Batchkörning med java.sql.PreparedStatement
låter dig köra ett enda DML-uttalande med flera uppsättningar värden för dess parametrar.
Det här exemplet visar hur man förbereder ett inläggsförklaring och använder det för att infoga flera rader i en batch.
Connection connection = ...; // obtained earlier
connection.setAutoCommit(false); // disabling autoCommit is recommend for batching
int orderId = ...; // The primary key of inserting and order
List<OrderItem> orderItems = ...; // Order item data
try (PreparedStatement insert = connection.prepareStatement(
"INSERT INTO orderlines(orderid, itemid, quantity) VALUES (?, ?, ?)")) {
// Add the order item data to the batch
for (OrderItem orderItem : orderItems) {
insert.setInt(1, orderId);
insert.setInt(2, orderItem.getItemId());
insert.setInt(3, orderItem.getQuantity());
insert.addBatch();
}
insert.executeBatch();//executing the batch
}
connection.commit();//commit statements to apply changes
Batchkörning med uttalande
Batchkörning med java.sql.Statement
låter dig köra flera DML-uttalanden ( update
, insert
, delete
) på en gång. Detta uppnås genom att skapa ett enda uttalandeobjekt, lägga till uttalandena för att köra och sedan köra partiet som ett.
Connection connection = ...; // obtained earlier
connection.setAutoCommit(false); // disabling autocommit is recommended for batch execution
try (Statement statement = connection.createStatement()) {
statement.addBatch("INSERT INTO users (id, username) VALUES (2, 'anna')");
statement.addBatch("INSERT INTO userrole(userid, rolename) VALUES (2, 'admin')");
statement.executeBatch();//executing the batch
}
connection.commit();//commit statements to apply changes
Notera:
statement.executeBatch();
kommer att returnera int[]
att hålla tillbaka värden, du kan köra din batch så här:
int[] stmExc = statement.executeBatch();//executing the batch