Matcher.quoteReplacement против подготовленного заявления - PullRequest
1 голос
/ 13 марта 2011

В моем проекте мне нужно создавать операторы вставки на основе переданных таблиц.Итак, у меня есть два варианта: 1) написать подготовленное заявление и запустить его в пакетном режиме 2) создать вставку в таблицу значений (..), (..), (..)

Я хочу знать причины предпочтения (1) более (2), если я использую Matcher.quoteReplacement () для экранирования значений

Заранее спасибо

1 Ответ

3 голосов
/ 13 марта 2011

Matcher.quoteReplacement не предназначен для кавычек строк SQL, поэтому вы не можете быть уверены, что не будете использовать вставки SQL, используя его.Но даже если бы у вас была рабочая функция цитирования, подготовленные операторы все равно были бы лучше по нескольким причинам:

  • Вам не нужно беспокоиться о том, что вы забудете процитировать ввод
  • .не возникает соблазна использовать ярлыки и не заключать в кавычки значения, которые вы «знаете», безопасны
  • База данных может кэшировать план выполнения, чтобы избежать анализа похожих SQL-запросов с различными параметрами, что повышает производительность
  • .код становится более читабельным (ИМХО)
...