2012-04-04 3 views
1

Я пытаюсь настроить цикл while, который вставляет несколько строк в таблицу MySQL, используя драйверы jdbc на Java. Идея заключается в том, что я в конечном итоге с заявлением по линиям:Объединить несколько PreparedStatements вместе

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

Я хочу установить это утверждение, используя java.sql.PreparedStatement, но я хотел бы, чтобы подготовить небольшие кусочки заявления, по одной строке время - главным образом потому, что количество записей будет динамичным, и это похоже на лучший способ создать один большой запрос.

Это требует, чтобы мелкие детали объединялись друг с другом каждый раз, когда генерировался другой кусок. Как объединить их вместе? Или вы бы предложили забыть об этой идее и просто выполнить тысячи INSERT заявлений сразу?

Спасибо, Патрик

+1

Вы хотите использовать пакетные обновления. См. [Здесь] (http://www.tutorialspoint.com/jdbc/jdbc-batch-processing.htm) для примера. –

ответ

1

Это зависит от того, как часто вы планируете запускать этот цикл для выполнения тысяч операторов, но это одна из точных целей подготовленных операторов и хранимых процедур - поскольку запрос не нужно перекомпилировать при каждом выполнении, вы получаете потенциально большой прирост производительности при запросе в цикле через си mple SQL-исполнение, которое должно быть скомпилировано и выполнено на каждой итерации цикла.

Эти выгоды могут по-прежнему не соответствовать производительности подготовленного оператора, созданного в длинную многопозиционную вставку в цикле, как вы просите, но будет проще кодировать. Я бы рекомендовал остаться с циклом выполнения, если производительность не станет проблематичной.

+0

Справедливо, я был обеспокоен тем, что это может повлиять на скорость работы, но это все ясно. Спасибо за Ваш ответ. – Patrickdev

1

Лучше подготовить один PreparedStatement и использовать его столько, сколько вы хотите:

INSERT INTO (таблица) (column1, column2) VALUES (COLUMN1, COLUMN2)

+0

Благодарим вас за ответ. – Patrickdev

Смежные вопросы