我有一个像这样的准备好的陈述
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();
我能做些什么让它发挥作用?
答案 0 :(得分:0)
您可以使用&#34; rewriteBatchedStatements&#34;自动执行此操作。 MySQL驱动程序中的选项。您可以编写单个insert语句并将其作为批处理执行,驱动程序将自动重写它,以便尽可能少地往返执行。 C.F. http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configuration-properties.html
使用此解决方案,您不必使用多行形式的INSERT。