PreparedStatements &lt&gt Statements?

teoricamente falando, qual a diferença ?
seria apenas q a 1ª enxuga o sql e o código não precisa ser recompilado?
thanks !!!

A diferença é que em preparedstatement sua query fica pré compilada.
Portanto tende a ser mais rápida, principalmente quando tem um número muito grande de queries iguais…

Existem até sistemas que fazem pool de preparedstatements, por esse motivo…

Pesquisando, gostei desta thread aqui:

http://www.velocityreviews.com/forums/t137697-difference-between-statement-and-preparedstatement-for-sql-databases-.html

como o PreparedStatements é pré-compilado, ele é seguro contra sql-injections.

O material que o artigo cita (um livro sobre Oracle + JDBC) usa o driver para a versão 7 do Oracle.

Desde aquele tempo, o desempenho tanto do Oracle quanto do driver JDBC devem ter melhorado sensivelmente.

De qualquer maneira, sempre recomendamos usar PreparedStatements devido aos seguintes benefícios:

  • Você não precisa se preocupar se o formato para datas é MM/DD/AAAA ou AAAA-MM-DD
  • Você não precisa se preocupar se o valor de doze mil, trezentos e quarenta e cinco reais e sessenta e sete centavos é "12.345,67" ou "12,345.67"
  • Você não precisa se preocupar em duplicar as aspas (“José Sant’Anna” -&gt ‘José Sant’‘Anna’ em SQL)
  • Você não precisa se preocupar muito com SQL Injection (exceto naqueles poucos bancos de dados cujo driver JDBC foram mal escritos e criam uma String SQL a partir do Prepared Statement, em vez de mandá-los em binário. Um desses bancos é o MySQL - os drivers mais antigos têm muitos bugs.)
  • Em alguns bancos (como o SQL Server e o Oracle) PreparedStatements podem ser até mais rápidos, dependendo da quantidade de vezes que se reusa o mesmo PreparedStatement.