具有多行的preparedstatement,其中未设置某些行值

时间:2014-04-03 01:28:46

标签: java mysql prepared-statement

我有一个像这样的准备好的陈述

insert into mytable (id, name) values (?,?) , (?,?);

我每个preparedStatement使用多行,因为我看到了大量的速度提升。

现在,如果要输入奇数行,则preparedStatement.executeBatch()不会在数据库中输入任何行。它不会引发任何错误。

这是我如何插入值

int count =0;
for(int i=0; i<size; i++) {
    statement.setObject(1, id[i]);
    statement.setObject(2, name[i]);

    //second row
    if(i+1 != size) {
        statement.setObject(1, id[i+1]);
        statement.setObject(2, name[i+1]);
    }

    statement.addBatch();
    if (count % 200 == 0 && count >0) {
        statement.executeBatch();
    }
}
statement.executeBatch();

我能做些什么让它发挥作用?

1 个答案:

答案 0 :(得分:0)

您可以使用&#34; rewriteBatchedStatements&#34;自动执行此操作。 MySQL驱动程序中的选项。您可以编写单个insert语句并将其作为批处理执行,驱动程序将自动重写它,以便尽可能少地往返执行。 C.F. http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html

使用此解决方案,您不必使用多行形式的INSERT。