Как правильно использовать PreparedStatement в Java? - PullRequest
1 голос
/ 15 июня 2011

В частности, если у меня есть три запроса, я должен сделать

PreparedStatement singleQuery ...

и «поделиться» одним объектом. Или я должен сделать

PreparedStatement query1 ...
PreparedStatement query2 ...
PreparedStatement query3 ...

Ответы [ 6 ]

5 голосов
/ 15 июня 2011

Зависит от того, насколько различны три запроса.Если это один и тот же запрос, но с разными аргументами, тогда используйте один PreparedStatement и устанавливайте аргументы каждый раз.Если это по сути три разных запроса (например, выбор с последующим обновлением), то вам понадобятся три разных PreparedStatement s.

Например, если SQL для всех трех имеет вид SELECT * FROM table WHERE id = somethingтогда хорошо подходит одно утверждение.

Если первый запрос SELECT name FROM customers WHERE id = ?, а второй SELECT price FROM products WHERE id = ?, то вам понадобятся разные объекты.

3 голосов
/ 15 июня 2011

Если три запроса используют один и тот же SQL, повторно используйте один и тот же объект.

Если нет, используйте три отдельных объекта.

Не используйте один и тот же объект в нескольких потоках.

2 голосов
/ 15 июня 2011

Если запросы разные, возможно, вам нужны отдельные PreparedStatement, но если разные запросы могут обрабатываться одним параметризованным запросом, вам, вероятно, следует пойти по этому пути.

1 голос
/ 15 июня 2011

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

Если вы не планируете повторно использовать свои заявления, это, вероятно, не имеет значения.

1 голос
/ 15 июня 2011

Используйте один параметризованный запрос и вызывайте его 3 раза, каждый раз связывая новые значения параметров.Если ваша база данных поддерживает кэширование подготовленных операторов, вы получите лучшую производительность, потому что реальный запрос нужно будет только скомпилировать в СУБД.

0 голосов
/ 15 июня 2011

Вы можете использовать его любым способом, никаких проблем с производительностью НЕТ, пока вы открываете Подготовленный оператор и закрываете подготовленные Отчеты соответствующим образом.

Предположим, что если вы используете отдельные подготовленные Отчеты, убедитесь, что высобираюсь использовать его для второго, необходимые переменные должны быть предоставлены соответствующим образом.

...