Sim, use declarações preparadas para tudo.
-
Eles são analisados uma vez.
-
Eles são imunes a ataques de injeção de SQL.
-
Eles são um design melhor porque você precisa pensar em seu SQL e como ele é usado.
Se você acha que eles são usados apenas uma vez, você não está olhando para o quadro geral. Algum dia, seus dados ou seu aplicativo mudarão.
Editar.
Por que as declarações preparadas fazem você pensar em seu SQL?
-
Quando você monta uma string (ou simplesmente executa um bloco literal de texto), você não está criando um novoPreparedStatement
objeto. Você está apenas executando SQL -- isso pode ser feito muito casualmente.
-
Quando você precisa criar (e salvar) umPreparedStatement
, você tem que pensar um pouquinho mais sobre encapsulamento, alocação de responsabilidade. A preparação de uma instrução é um evento stateful antes de qualquer processamento SQL.
O trabalho extra é pequeno, mas não insignificante. É o que faz com que as pessoas comecem a pensar em ORM e uma camada de cache de dados, e coisas assim para otimizar o acesso ao banco de dados.
Com instruções Prepared, o acesso ao banco de dados é menos casual, mais intencional.