📜  使用JDBC批量插入记录

📅  最后修改于: 2022-05-13 01:55:48.698000             🧑  作者: Mango

使用JDBC批量插入记录

它使用addBatch()executeBatch()函数执行 方法。为此,我们可以先了解 JDBC 驱动程序。因此,为了使用Java连接到您的数据库,您需要一个 JDBC 驱动程序。每个数据库(MySQL、Oracle 等)都有自己的 JDBC 驱动程序,通常由数据库供应商构建并在数据库网站上找到。以 MySQL 数据库为例,您需要访问 MySQL 网站,下载 MySQL JDBC 驱动程序 .jar 文件(也称为 Connector/J),并将其添加到您的项目中。

现在让我们讨论它们操作的方法。所以,上面的两个方法分别是 addBatch()executeBatch() 方法如下:

方法一: addBatch()

此方法在内部将参数值添加到批处理中。您现在可以添加另一组值,以插入到 SQL 语句中。一旦完整的批处理被发送到数据库,每组参数都被插入到 SQL 中并单独执行。

方法二: executeBatch()

调用此方法,执行所有批量更新。 SQL 语句加上参数集一次性发送到数据库。 executeBatch() 方法返回的 int[] 数组是一个 int 数组,表示批处理中每个执行的 SQL 语句影响了多少条记录。

语法:创建数据库

create table emp(eid varchar(200) unique,ename varchar(200)

例子:

Java
// Step 1: Importing DB(SQL) classes
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
 
// Class
public class insertion {
 
    // Main driver method
    public static void main(String[] args) throws Exception
    {
 
        // Try block to check for exceptions
        try {
            // Step 2: Loading and registering drivers
 
            // Loading drivers using forName() method
            Class.forName("com.mysql.jdbc.Driver");
 
            // Registering driver using DriverManager
            Connection con = DriverManager.getConnection(
                "jdbc:mysql://localhost/test", "root", "");
 
            // Step 3: Create a statement
            Statement st = con.createStatement();
            String sql
                = "insert into emp (eid,ename) values (?, ?)";
 
            // Step 4: Execute the query
            PreparedStatement pstmt;
            pstmt = con.prepareStatement(sql);
            final int batchSize = 5000;
            int count = 0;
            for (int i = 4000; i <= 4500; i++) {
 
                pstmt.setString(1, "181FA0" + i);
                pstmt.setString(2, "181FA0" + i);
 
                pstmt.addBatch();
 
                count++;
 
                if (count % batchSize == 0) {
                    System.out.println("Commit the batch");
                    pstmt.executeBatch();
                }
                pstmt.executeBatch();
            }
        }
        catch (Exception e) {
            System.out.println("Error:" + e.getMessage());
        }
    }
}


输出:

eidename
181FA04001181FA04001
181FA04002181FA04002
. . .. . .
181FA04500181FA04500