2017-02-22 12 views
1

Я изучаю JDBC на данный момент, и я уже знаю разницу между PreparedStatement и Statement. Это то, что PreparedStatement предварительно скомпилировано и позволяет вам устанавливать параметры, но мне задали вопрос о собеседовании о различии между партией PreparedStatement и выпиской из пакета Statement.Разница между партией PreparedStatement и пакетом Statement

+0

Вы исследовали его и есть конкретный вопрос о чем-нибудь? Или в чем проблема? – 4castle

+0

И каков был ваш ответ? – Andremoniy

+0

Я просто хочу знать, что между этими партиями есть что-то заранее, может быть, какая-то особая реализация, или просто, что PreparedStatement отличается от Statement? –

ответ

5

Разница между пакетным исполнением Statement и PreparedStatement, является то, что Statement пакет может содержать различные заявления (до тех пор, как они есть утверждения, которые не производят набор результатов), например, один пакет может содержать все виды вставляет в различные таблицы, удаляет, обновляет и - не во всех реализациях JDBC-драйверов AFAIK - даже инструкции DDL.

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

Короче:

  • Statement: партия может содержать много различных заявлений
  • PreparedStatement: один оператор, несколько наборов значений параметров
-1

Ведомость используется для выполнения статической инструкции SQL и возврата результатов, которые она производит.

В PreparedStatement оператор SQL предварительно скомпилирован и хранится в объекте PreparedStatement. Затем этот объект можно использовать для эффективного выполнения этого утверждения несколько раз. Поскольку команда sql уже скомпилирована, вы сэкономите некоторое время.

Интерфейс PreparedStatement расширяет интерфейс Statement.

public interface PreparedStatement extends Statement 

Пакетная обработка:

Пакетная обработка означает, что партия будет сделано "все сразу". В пакете вы можете выполнять несколько операторов в одной транзакции, а не выполнять их один за другим. Это также улучшит производительность, потому что вы делаете одну поездку туда и обратно на сервер базы данных, чтобы вставить несколько записей вместо нескольких поездок.

executeBatch() API является частью интерфейса Statement, который отправляет пакет команд в базу данных для выполнения, и если все команды выполняются успешно, возвращается массив подсчетов обновлений.

Вы создаете несколько заявлений/подготовленных материалов и добавляете их в пакет. Чтобы выполнить его вместо

statement.execute(); //executes single statement/preparedstatement 

вы звоните

statement.addBatch(); //to add statement to batch 
statement.executeBatch(); //executes batch of statement/preparedstatement 

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

+1

Странно, что ваш ответ принят, потому что он фактически не учитывает разницу между «Statement» и «PreparedStatement». –

+0

@MarkRotteveel Asker уже упоминал, что он знает разницу между заявлением и подготовленным заявлением. Итак, я только что объяснил партию. Дайте мне знать, как улучшить этот ответ. – Maverick

+1

Основным улучшением было бы описание фактической разницы между пакетом 'Statement' и' PreparedStatement', см. Мой ответ. –

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