2013-09-09 3 views

ответ

1

Готовое заявление прекомпилируется для повышения эффективности. Также база данных кэширует оператор, который получает производительность при последующем выполнении. Оба варианта могут быть полезны, даже если в вашем заявлении нет переменных. Особенно, если заявление выполняется часто.

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

1

Зависит от реализации драйвера JDBC. Некоторые поставщики сохраняют этот оператор в кеше, независимо от того, является ли он экземпляром java.sql.Statement или java.sql.PreparedStatement. Для простоты вы можете использовать java.sql.Statement. С другой стороны, если вы планируете добавить параметр и выполнить оператор несколько раз (в том же соединении), использует экземпляр java.sql.PreparedStatement.

В Javadoc для java.sql.PreparedStatement говорит:

Этот объект может быть использован для эффективного выполнения этого заявления, которое несколько раз.

0

Помимо того, что было упомянуто stonedsquirrel, еще один момент в будущем, если вы хотите добавить, где состояние, то это легко сделать изменения, все, что вам нужно добавить следующее в вашем коде

PreparedStatement ps = con.prepareStatement("SELECT ID, NAME FROM PERSON WHERE NAME= ?"); 
ps.setString(1, getName("")); 
.... 
... 

Однако если вы используете Statement, то вам нужно внести больше изменений в свой код.

Таким образом, используя PreparedStatement, вы сделаете минимальное изменение, если вам нужно добавить условия.

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

Смежные вопросы