PreparedStatements имеют два основных применения:
- Предотвращение атак с использованием SQL-инъекций. Это в основном означает автоматическую очистку входных данных от внешних источников ( веб-браузер является внешним! ) которые будут сохранены в базе данных.
- Пакетная обработка. Если у вас есть много данных для одновременного ввода / изменения в / удаления из базы данных, PreparedStatement может бытьиспользуется для этого.В этом случае PreparedStatement оптимизирует большую часть накладных расходов на такие операции и позволяет быстро написать пакетный код базы данных.
Обе эти причины являются очень убедительными и оправдывают использование PreparedStatement почти всегда, однаков зависимости от того, как вы используете базу данных, вы можете достичь точки, в которой PreparedStatement не позволит вам делать то, что вы хотите.
В качестве примера такого случая я однажды написал инструмент, который генерировал таблицуимена на лету, основанные на свойствах среды выполнения некоторых абстракций, что означало, что я должен иметь возможность иметь SQL-запросы с изменяемыми именами таблиц;вы не можете получить их с помощью PreparedStatement, поэтому мне пришлось использовать необработанные операторы и некоторые хитрости предварительной обработки, чтобы вернуться к использованию PreparedStatements для защиты SQL-инъекций.