将多个PreparedStatements合并在一起

时间:2012-04-04 19:52:23

标签: java mysql jdbc prepared-statement

我试图设置一个while循环,使用Java中的jdbc驱动程序将多行插入MySQL表。我的想法是,我最终得到了一句话:

INSERT INTO table (column1, column2) VALUES (column1, column2), (column1, column2);

我想使用java.sql.PreparedStatement设置此语句,但我想准备一小段语句,一次一行 - 主要是因为条目的数量是动态的,并且这似乎是创建一个大查询的最佳方式。

这需要将小部件合并到一起。每次生成另一个块时一起。我如何将这些合并在一起?或者你会建议忘记这个想法,只需一次执行数千个INSERT语句吗?

谢谢你, 帕特里克

2 个答案:

答案 0 :(得分:1)

最好准备一个PreparedStatement并根据需要重复使用它:

INSERT INTO(table)(column1,column2)VALUES(column1,column2)

答案 1 :(得分:1)

这取决于您计划运行此循环以执行数千个语句的频率,但这是预准备语句和存储过程的确切目的之一 - 因为查询不必在每次执行时重新编译,在通过简单的SQL语句执行循环查询时,您可以获得潜在的巨大性能提升,必须在每次循环迭代时进行编译和执行。

这些增益可能仍然不符合您在循环中构建到循环中的长多插入中的预准备语句的性能,但编码更简单。我建议保持执行循环,除非性能成为问题。