Home >Java >javaTutorial >How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 13:44:10843browse

How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?

Insert Multiple MySQL Rows with PreparedStatement

To optimize row insertion into a MySQL table, you can leverage the supported syntax:

INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]

However, if the number of rows to be inserted dynamically, using a PreparedStatement can be challenging.

Using a PreparedStatement with AddBatch

To insert multiple rows dynamically using a PreparedStatement, you can create a batch using the addBatch() method and execute it with executeBatch().

Here's an example:

public void save(List<Entity> entities) throws SQLException {
    try (
        Connection connection = database.getConnection();
        PreparedStatement statement = connection.prepareStatement(SQL_INSERT);
    ) {
        int i = 0;

        for (Entity entity : entities) {
            statement.setString(1, entity.getSomeProperty());
            // ...

            statement.addBatch();
            i++;

            if (i % 1000 == 0 || i == entities.size()) {
                statement.executeBatch(); // Execute every 1000 items.
            }
        }
    }
}

This approach executes the batch every 1000 items, considering limitations in JDBC drivers or database batch length.

Alternative Methods

If using a PreparedStatement with batching is not feasible, alternative methods for inserting multiple rows include:

  • Using the insert() method of a PreparedStatement for each row, with potential performance limitations.
  • Using a Statement object, which allows execution of multiple SQL statements at once.

References:

  • [JDBC Tutorial - Using PreparedStatement](https://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html)
  • [JDBC Tutorial - Using Statement Objects for Batch Updates](https://docs.oracle.com/javase/tutorial/jdbc/basics/batchupdates.html)

The above is the detailed content of How Can I Efficiently Insert Multiple Rows into MySQL Using PreparedStatements?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn