Я хотел бы знать, какой из них лучше подходит для обеспечения производительности и безопасности. Я использую MySql DB, а значения имеют тип varchar.
Должен ли я напрямую конкатенировать значения, чтобы сформировать строку запроса и выполнить запрос? (или) Должен ли я использовать параметризованные запросы?
заранее спасибо
Я считаю, что безопасность - это единственная серьезная проблема. Если вы не создаете динамический запрос с помощью инструкции, вы оставите открытым возможность для SQL-инъекции, особенно если некоторые из входов в запрос имеют нестерилизованные данные, поступающие из внешнего мира. Если вы используете утверждения, тогда вы значительно минимизируете вероятность этого.
Что касается производительности, в создании и выполнении инструкции возникнут некоторые накладные расходы, но я бы сказал, что штраф за использование оператора над необработанной строкой довольно мал. Большей проблемой для вашей производительности, вероятно, будет сам запрос, и как вы настроили свою схему.
Итак, мой голос за использование заявления, в предположении, что производительность является второстепенным фактором для рассмотрения здесь.
Вы должны заботиться о безопасности данных, а затем о производительности. Если вы объединяете параметры запроса, ваша безопасность подвержена риску, а также может нарушить ваш запрос; это не лучший способ.
Таким образом, вы должны параметризовать свой запрос вместо конкатенации для меры безопасности, для обработки строки запроса требуется очень мало времени.
Использование параметризованного запроса является наиболее рекомендуемым решением. Это предотвратит угрозу SQL-инъекции, а также предоставит вам гибкость при обновлении запроса по мере необходимости без какого-либо воздействия на ваш запрос.
вы можете использовать постоянный запрос как часть базовой разработки, но при использовании производственного кода следует использовать параметризованный запрос и пытаться использовать подготовленные операторы, чем обычные строковые выражения. Использование подготовленного Statement в Java JDBC повышает производительность и преимущества безопасности.