Один объект Statement, несколько executeUpdates - PullRequest
2 голосов
/ 15 июня 2011

Рекомендуется создать только один объект Statement и выполнить для него несколько executeUpdate ()?

// Vantages/drawbacks of this solution?
conn.setAutocommit(false);

Statement stmt = conn.createStatement();
stmt.executeUpdate('[ANY_INSERT_SQL]');
stmt.executeUpdate('[ANY_INSERT_SQL]');
stmt.executeUpdate('[ANY_INSERT_SQL]');

conn.commit();

Или лучше один объект Statement для каждого executeUpdate:

// Vantages/drawbacks of this solution?
conn.setAutocommit(false);

Statement stmt1 = conn.createStatement();
stmt1.executeUpdate('[ANY_INSERT_SQL]');
Statement stmt2 = conn.createStatement();
stmt2.executeUpdate('[ANY_INSERT_SQL]');
Statement stmt3 = conn.createStatement();
stmt3.executeUpdate('[ANY_INSERT_SQL]');

conn.commit();

Заранее спасибо.

PS: я знаю класс PreparedStatement и часто им пользуюсь, но я сомневаюсь в использовании Statement.

Ответы [ 2 ]

4 голосов
/ 15 июня 2011

Это не имеет значения, просто убедитесь, что вы закрыли все объекты операторов.

1 голос
/ 15 июня 2011

На основе javadoc оператор может иметь только один связанный ResultSet объект.

Объект, используемый для выполнения статического Оператор SQL и возвращающий результаты, которые он дает.

По умолчанию только один объект ResultSet на объект Statement может быть открыт в в то же время. Следовательно, если чтение одного объекта ResultSet чередуется с чтением другой, каждый должен быть сгенерирован разными объектами Statement. Все Методы выполнения в заявлении интерфейс неявно закрыть текущий объект ResultSet объекта, если открытый существует.

http://download.oracle.com/javase/1.4.2/docs/api/java/sql/Statement.html

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

Вероятно, чаще всего вам нужно использовать только один.

С точки зрения производительности, возможно, лучше, так как поддерживает меньшее количество активных ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...