jdbc
Anweisungsausgabe
Suche…
Einführung
java.sql.Statement
) oder eine einzelne Anweisung mit mehreren Parametersätzen (mit einem java.sql.PreparedStatement
) ausgeführt.
Bemerkungen
Das Anweisungsbatching ermöglicht einem Programm, zusammengehörige Anweisungen zu sammeln, oder bei vorbereiteten Anweisungen, Parameterwertesätze, und diese als eine einzige Ausführung an den Datenbankserver zu senden.
Die Vorteile des Anweisungsstapelns können eine verbesserte Leistung umfassen. Ob und wie diese Leistungsvorteile erzielt werden, hängt von der Treiber- und Datenbankunterstützung ab. Dazu gehören:
- Senden Sie alle Anweisungen (oder alle Wertesätze) in einem Befehl
- Die Anweisung (en) umschreiben, damit sie wie eine große Anweisung ausgeführt werden können
Stapeleinfügung mit PreparedStatement
Die Stapelverarbeitung mit java.sql.PreparedStatement
ermöglicht Ihnen die Ausführung einer einzelnen DML-Anweisung mit mehreren java.sql.PreparedStatement
für ihre Parameter.
In diesem Beispiel wird veranschaulicht, wie eine Einfügeanweisung vorbereitet und zum Einfügen mehrerer Zeilen in einen Stapel verwendet wird.
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
Stapelverarbeitung mit Statement
Die Stapelverarbeitung mit java.sql.Statement
ermöglicht das gleichzeitige Ausführen mehrerer DML-Anweisungen ( update
, insert
, delete
). Dies wird erreicht, indem ein einzelnes Anweisungsobjekt erstellt, die auszuführenden Anweisungen hinzugefügt und der Stapel dann als eine ausgeführt wird.
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
Hinweis:
statement.executeBatch();
gibt int[]
, um die zurückgegebenen Werte zu speichern. Sie können den Stapel so ausführen:
int[] stmExc = statement.executeBatch();//executing the batch