Java-无法将批次1000插入表

Java-无法将批次1000插入表,java,mysql,Java,Mysql,假设我有一个程序,在Java的ddatabase中将记录插入MYSQL表 我不是一行一行地插入,而是一批插入1000条记录。使用ExecuteBatch方法,它似乎不起作用,因为它仍然逐行插入 代码(仅限于代码片段): public void readDataBase(字符串路径、字符串字)引发异常{ 试一试{ Class.forName(“com.mysql.jdbc.Driver”); connect=DriverManager .getConnection(“jdbc:mysql://12

假设我有一个程序,在Java的ddatabase中将记录插入MYSQL表

我不是一行一行地插入,而是一批插入1000条记录。使用
ExecuteBatch
方法,它似乎不起作用,因为它仍然逐行插入

代码(仅限于代码片段):

public void readDataBase(字符串路径、字符串字)引发异常{
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
connect=DriverManager
.getConnection(“jdbc:mysql://126.32.3.20/fulltext_ltat?"
+“user=root&password=root”);
String sql=“将忽略插入全文索引值(默认值,,?)”;
preparedStatement=connect.prepareStatement(sql);

for(int i=0;i
i%1000==0
i==0
时为真,因此只在循环的第一次迭代中执行批处理

您应该在循环之后执行批处理:

    for (int i=0;i<1000;i++) {
        preparedStatement.setString(1, path);
        preparedStatement.setString(2, word);
        preparedStatement.addBatch();
    }
    preparedStatement.executeBatch();
    System.out.print("Add Thousand");

最后,批插入循环将变成:

    for (int i=0;i<words.length;i++) {
        preparedStatement.setString(1, path);
        preparedStatement.setString(2, words[i]);
        preparedStatement.addBatch();
        if ((i + 1) % 1000 == 0) {
            preparedStatement.executeBatch();
            System.out.print("Add Thousand");
        }
    }
    if (words.length % 1000 > 0) {
        preparedStatement.executeBatch();
        System.out.print("Add Remaining");
    }
for(int i=0;i 0){
preparedStatement.executeBatch();
系统输出打印(“添加剩余”);
}

在配置属性url add:
allowMultiQueries=true

在批处理达到1000后执行insert的if语句如何?我想我可能犯了一个很大的错误。因为我发布的代码是通过for循环从主方法调用的。因此,使用您的解决方案,它将第一条记录插入1000次,然后由第二个记录降低,…等等。所以我需要确保每个单词只插入once@Daredevil哦,我没有注意到。如果你想
readDataBase
插入不同的记录,也许你应该将它传递到字符串数组,而不是两个字符串,并且只从
main
调用它一次。我编辑了我的帖子以包含主方法代码。也许您可以看一看并告诉我我做错了什么连接有问题。readDataBase(路径,单词);as-it-it-it-String[]无法应用于对象[],这是我定义单词的地方。我可以将哈希集转换为数组,但它不能存储在数组中,而只能存储在对象[]中,我不知道为什么
    for (int i=0;i<1000;i++) {
        preparedStatement.setString(1, path);
        preparedStatement.setString(2, word);
        preparedStatement.addBatch();
    }
    preparedStatement.executeBatch();
    System.out.print("Add Thousand");
    for (int i=0;i<10000;i++) {
        preparedStatement.setString(1, path);
        preparedStatement.setString(2, word);
        preparedStatement.addBatch();
        if ((i + 1) % 1000 == 0) {
            preparedStatement.executeBatch();
            System.out.print("Add Thousand");
        }
    }
        for(int i = 1 ; i <= words.length - 1 ; i++ ) {
            connection.readDataBase(path, words[i].toString());
        }
        connection.readDataBase(path, words);
public void readDataBase(String path,String word) throws Exception {
public void readDataBase(String path,String[] words) throws Exception {
    for (int i=0;i<words.length;i++) {
        preparedStatement.setString(1, path);
        preparedStatement.setString(2, words[i]);
        preparedStatement.addBatch();
        if ((i + 1) % 1000 == 0) {
            preparedStatement.executeBatch();
            System.out.print("Add Thousand");
        }
    }
    if (words.length % 1000 > 0) {
        preparedStatement.executeBatch();
        System.out.print("Add Remaining");
    }