Интерфейс оператора
- Все суперинтерфейсы:
-
AutoCloseable,Wrapper
- Все известные подинтерфейсы:
-
CallableStatement,PreparedStatement
public interface Statement extends Wrapper, AutoCloseable
Объект, используемый для выполнения статического SQL-запроса и возврата полученных результатов.
По умолчанию, только один объект ResultSet на объект Statement может быть открыт одновременно. Поэтому, если чтение одного объекта ResultSet перекрывается чтением другого, каждый должен быть сгенерирован различными объектами Statement. Все методы выполнения в интерфейсе Statement неявно закрывают текущий объект ResultSet оператора, если он открыт.
- С:
- 1.1
- См. также:
-
Connection.createStatement(),ResultSet
Свойства
| Модификатор и тип | Свойство | Описание |
|---|---|---|
static int | CLOSE_ALL_RESULTS | Константа, указывающая, что все объекты |
static int | CLOSE_CURRENT_RESULT | Константа, указывающая, что текущий объект |
static int | EXECUTE_FAILED | Константа, указывающая, что произошла ошибка при выполнении пакетного запроса. |
static int | KEEP_CURRENT_RESULT | Константа, указывающая, что текущий объект |
static int | NO_GENERATED_KEYS | Константа, указывающая, что сгенерированные ключи недоступны для извлечения. |
static int | RETURN_GENERATED_KEYS | Константа, указывающая, что сгенерированные ключи доступны для извлечения. |
static int | SUCCESS_NO_INFO | Константа, указывающая, что пакетный запрос был успешно выполнен, но количество затронутых строк недоступно. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void | addBatch(String sql) | Добавляет заданную SQL-команду в текущий список команд для этого объекта |
void | cancel() | Отменяет этот объект |
void | clearBatch() | Очищает текущий список SQL-команд этого объекта |
void | clearWarnings() | Очищает все предупреждения, сообщенные об этом объекте |
void | close() | Немедленно высвобождает базу данных и JDBC-ресурсы этого объекта |
void | closeOnCompletion() | Указывает, что этот объект |
default String | enquoteIdentifier(String identifier,
boolean alwaysQuote) | Возвращает идентификатор SQL. |
default String | enquoteLiteral(String val) | Возвращает |
default String | enquoteNCharLiteral(String val) | Возвращает |
boolean | execute(String sql) | Выполняет заданный SQL-запрос, который может возвращать несколько результатов. |
boolean | execute(String sql,
int autoGeneratedKeys) | Выполняет заданный SQL-запрос, который может возвращать несколько результатов, и сигнализирует драйверу, что любые автоматически сгенерированные ключи должны быть доступны для извлечения. |
boolean | execute(String sql,
int[] columnIndexes) | Выполняет заданный SQL-запрос, который может возвращать несколько результатов, и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
boolean | execute(String sql,
String[] columnNames) | Выполняет заданный SQL-запрос, который может возвращать несколько результатов, и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
int[] | executeBatch() | Отправляет пакет команд в базу данных для выполнения и, если все команды выполнены успешно, возвращает массив счетчиков обновлений. |
default long[] | executeLargeBatch() | Отправляет пакет команд в базу данных для выполнения и, если все команды выполнены успешно, возвращает массив счетчиков обновлений. |
default long | executeLargeUpdate(String sql) | Выполняет заданный SQL-запрос, который может быть |
default long | executeLargeUpdate(String sql,
int autoGeneratedKeys) | Выполняет заданный SQL-запрос и сигнализирует драйверу с заданным флагом о том, должны ли автоматически сгенерированные ключи, созданные этим объектом |
default long | executeLargeUpdate(String sql,
int[] columnIndexes) | Выполняет заданный SQL-запрос и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
default long | executeLargeUpdate(String sql,
String[] columnNames) | Выполняет заданный SQL-запрос и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
ResultSet | executeQuery(String sql) | Выполняет заданный SQL-запрос, который возвращает один объект |
int | executeUpdate(String sql) | Выполняет заданный SQL-запрос, который может быть |
int | executeUpdate(String sql,
int autoGeneratedKeys) | Выполняет заданный SQL-запрос и сигнализирует драйверу с заданным флагом о том, должны ли автоматически сгенерированные ключи, созданные этим объектом |
int | executeUpdate(String sql,
int[] columnIndexes) | Выполняет заданный SQL-запрос и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
int | executeUpdate(String sql,
String[] columnNames) | Выполняет заданный SQL-запрос и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в данном массиве, должны быть доступны для извлечения. |
Connection | getConnection() | Возвращает объект |
int | getFetchDirection() | Возвращает направление извлечения строк из таблиц базы данных, которое является значением по умолчанию для наборов результатов, сгенерированных из этого объекта |
int | getFetchSize() | Возвращает количество строк набора результатов, которое является значением по умолчанию для размера извлечения для объектов |
ResultSet | getGeneratedKeys() | Возвращает любые автоматически сгенерированные ключи, созданные в результате выполнения этого объекта |
default long | getLargeMaxRows() | Возвращает максимальное количество строк, которое может содержать объект |
default long | getLargeUpdateCount() | Возвращает текущий результат как счетчик обновлений; если результат — объект |
int | getMaxFieldSize() | Возвращает максимальное количество байтов, которое может быть возвращено для значений символьных и двоичных столбцов в объекте |
int | getMaxRows() | Возвращает максимальное количество строк, которое может содержать объект |
boolean | getMoreResults() | Переходит к следующему результату этого объекта |
boolean | getMoreResults(int current) | Переходит к следующему результату этого объекта |
int | getQueryTimeout() | Возвращает количество секунд, которое драйвер будет ждать, пока объект |
ResultSet | getResultSet() | Возвращает текущий результат в качестве объекта |
int | getResultSetConcurrency() | Возвращает конкурентность набора результатов для объектов |
int | getResultSetHoldability() | Возвращает поддерживаемость набора результатов для объектов |
int | getResultSetType() | Возвращает тип набора результатов для объектов |
int | getUpdateCount() | Возвращает текущий результат как счетчик обновлений; если результат — объект |
SQLWarning | getWarnings() | Возвращает первое предупреждение, сообщенное вызовами на этом объекте |
boolean | isClosed() | Возвращает, был ли закрыт этот объект |
boolean | isCloseOnCompletion() | Возвращает значение, указывающее, будет ли закрыт этот объект |
boolean | isPoolable() | Возвращает значение, указывающее, является ли объект |
default boolean | isSimpleIdentifier(String identifier) | Возвращает, является ли |
void | setCursorName(String name) | Устанавливает имя SQL-курсора на заданное значение |
|---|---|---|
void | setEscapeProcessing(boolean enable) | Включает или выключает обработку экранирования. |
void | setFetchDirection(int direction) | Даёт драйверу подсказку о направлении обработки строк в объектах |
void | setFetchSize(int rows) | Даёт JDBC-драйверу подсказку о количестве строк, которые должны быть извлечены из базы данных при необходимости дополнительных строк для объектов |
default void | setLargeMaxRows(long max) | Устанавливает предел максимального количества строк, которое может содержать любой объект |
void | setMaxFieldSize(int max) | Устанавливает предел максимального количества байтов, которые могут быть возвращены для значений символьных и двоичных столбцов в объекте |
void | setMaxRows(int max) | Устанавливает предел максимального количества строк, которое может содержать любой объект |
void | setPoolable(boolean poolable) | Запрашивает, должен ли объект |
void | setQueryTimeout(int seconds) | Устанавливает количество секунд, которое драйвер будет ждать выполнения объекта |
Методы, объявленные в интерфейсе java.sql.Wrapper
isWrapperFor, unwrap Поля
CLOSE_CURRENT_RESULT
static final int CLOSE_CURRENT_RESULT
Константа, указывающая, что текущий объект ResultSet должен быть закрыт при вызове getMoreResults.
- Since:
- 1.4
- См. также:
- Значения константных полей
KEEP_CURRENT_RESULT
static final int KEEP_CURRENT_RESULT
Константа, указывающая, что текущий объект ResultSet не должен быть закрыт при вызове getMoreResults.
- Since:
- 1.4
- См. также:
- Значения константных полей
CLOSE_ALL_RESULTS
static final int CLOSE_ALL_RESULTS
Константа, указывающая, что все объекты ResultSet , которые ранее были открыты, должны быть закрыты при вызове getMoreResults.
- Since:
- 1.4
- См. также:
- Значения константных полей
SUCCESS_NO_INFO
static final int SUCCESS_NO_INFO
Константа, указывающая, что оператор пакетной обработки был выполнен успешно, но количество затронутых строк недоступно.
- Since:
- 1.4
- См. также:
- Значения константных полей
EXECUTE_FAILED
static final int EXECUTE_FAILED
Константа, указывающая, что при выполнении оператора пакетной обработки произошла ошибка.
- Since:
- 1.4
- См. также:
- Значения константных полей
RETURN_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS
Константа, указывающая, что сгенерированные ключи должны быть доступны для извлечения.
- Since:
- 1.4
- См. также:
- Значения константных полей
NO_GENERATED_KEYS
static final int NO_GENERATED_KEYS
Константа, указывающая, что сгенерированные ключи не должны быть доступны для извлечения.
- Since:
- 1.4
- См. также:
- Значения константных полей
Методы
executeQuery
ResultSet executeQuery(String sql)
throws SQLException Выполняет заданный оператор SQL, который возвращает один объект ResultSet.
Примечание:Этот метод не может быть вызван для объекта PreparedStatement или CallableStatement.
- Параметры:
-
sql- оператор SQL, который нужно отправить в базу данных, обычно статический оператор SQLSELECT - Возвращает:
- объект
ResultSet, содержащий данные, полученные в результате заданного запроса; никогда неnull - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных, этот метод вызывается для закрытого объектаStatement, заданный оператор SQL возвращает что-либо, кроме одного объектаResultSet, метод вызывается для объектаPreparedStatementилиCallableStatement -
SQLTimeoutException- когда драйвер определил, что значение времени ожидания, указанное методомsetQueryTimeout, было превышено, и по крайней мере попытался отменить текущее выполнениеStatement
executeUpdate
int executeUpdate(String sql)
throws SQLException Выполняет заданный оператор SQL, который может быть оператором INSERT, UPDATE или DELETE или оператором SQL, который ничего не возвращает, например, оператор SQL DDL.
Примечание:Этот метод не может быть вызван для объекта PreparedStatement или CallableStatement.
- Параметры:
-
sql- оператор SQL Data Manipulation Language (DML), например,INSERT,UPDATEилиDELETE; или оператор SQL, который ничего не возвращает, например, оператор DDL. - Возвращает:
- либо (1) количество строк для операторов SQL Data Manipulation Language (DML), либо (2) 0 для операторов SQL, которые ничего не возвращают
- Исключения:
-
SQLException- если возникает ошибка доступа к базе данных, этот метод вызывается для закрытого объектаStatement, заданный оператор SQL возвращает объектResultSet, метод вызывается для объектаPreparedStatementилиCallableStatement -
SQLTimeoutException- когда драйвер определил, что значение времени ожидания, указанное методомsetQueryTimeout, было превышено, и по крайней мере попытался отменить текущее выполнениеStatement
close
void close()
throws SQLException Немедленно освобождает ресурсы базы данных и JDBC этого объекта Statement, вместо того, чтобы ждать, пока это произойдет при автоматическом закрытии. Как правило, рекомендуется освобождать ресурсы, как только вы закончите работу с ними, чтобы избежать блокировки ресурсов базы данных.
Вызов метода close для объекта Statement, который уже закрыт, не оказывает никакого действия.
Примечание:Когда объект Statement закрывается, его текущий объект ResultSet, если он существует, также закрывается.
- Указано в:
-
closeв интерфейсеAutoCloseable - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных
getMaxFieldSize
int getMaxFieldSize()
throws SQLException Извлекает максимальное количество байтов, которое может быть возвращено для значений столбцов символов и двоичных данных в объекте ResultSet, созданном этим объектом Statement. Это ограничение применяется только к столбцам BINARY, VARBINARY, LONGVARBINARY, CHAR, VARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR и LONGVARCHAR. Если превышен лимит, избыточные данные будут молча отброшены.
- Возвращает:
- текущий лимит размера столбца для столбцов, хранящих значения символов и двоичных данных; ноль означает, что лимита нет
- Исключения:
-
SQLException- если возникает ошибка доступа к базе данных или этот метод вызывается для закрытого объектаStatement - См. также:
setMaxFieldSize(int)
setMaxFieldSize
void setMaxFieldSize(int max)
throws SQLException Устанавливает лимит для максимального количества байтов, которые могут быть возвращены для значений столбцов символов и двоичных данных в объекте ResultSet, созданном этим объектом Statement. Это ограничение применяется только к полям BINARY, VARBINARY, LONGVARBINARY, CHAR, VARCHAR, NCHAR, NVARCHAR, LONGNVARCHAR и LONGVARCHAR. Если превышен лимит, избыточные данные будут молча отброшены. Для максимальной переносимости используйте значения больше 256.
- Параметры:
-
max- новый лимит размера столбца в байтах; ноль означает, что лимита нет - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных, этот метод вызывается для закрытого объектаStatementили условиеmax >= 0не выполняется - См. также:
getMaxFieldSize()
getMaxRows
int getMaxRows()
throws SQLException Извлекает максимальное количество строк, которое может содержать объект ResultSet, созданный этим объектом Statement. Если этот лимит превышен, избыточные строки будут молча отброшены.
- Возвращает:
- текущее максимальное количество строк для объекта
ResultSet, созданного этим объектомStatement; ноль означает, что лимита нет - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных или этот метод вызывается для закрытого объектаStatement - См. также:
setMaxRows(int)
setMaxRows
void setMaxRows(int max)
throws SQLException Устанавливает лимит для максимального количества строк, которое может содержать любой объект ResultSet, созданный этим объектом Statement, на заданное число. Если этот лимит превышен, избыточные строки будут молча отброшены.
- Параметры:
-
max- новый лимит максимального количества строк; ноль означает, что лимита нет - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных, этот метод вызывается для закрытого объектаStatementили условиеmax >= 0не выполняется - См. также:
getMaxRows()
setEscapeProcessing
void setEscapeProcessing(boolean enable)
throws SQLException Включает или выключает обработку экранирования. Если сканирование экранирования включено (по умолчанию), драйвер будет выполнять подстановку экранирования перед отправкой оператора SQL в базу данных.
Свойство Connection и DataSource escapeProcessing может использоваться для изменения поведения обработки экранирования по умолчанию. Значение true (по умолчанию) включает обработку экранирования для всех объектов Statement. Значение false отключает обработку экранирования для всех объектов Statement. Метод setEscapeProcessing может использоваться для указания поведения обработки экранирования для отдельного объекта Statement.
Примечание: Поскольку подготовленные операторы обычно анализируются до выполнения этого вызова, отключение обработки экранирования для объектов PreparedStatements не будет иметь эффекта.
- Параметры:
-
enable-trueдля включения обработки экранирования;falseдля отключения - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных или этот метод вызывается для закрытого объектаStatement
getQueryTimeout
int getQueryTimeout()
throws SQLException Извлекает количество секунд, в течение которых драйвер будет ожидать выполнения объекта Statement. Если лимит превышен, выбрасывается SQLException.
- Возвращает:
- текущий лимит времени ожидания запроса в секундах; ноль означает, что лимита нет
- Исключения:
-
SQLException- если возникает ошибка доступа к базе данных или этот метод вызывается для закрытого объектаStatement - См. также:
setQueryTimeout(int)
setQueryTimeout
void setQueryTimeout(int seconds)
throws SQLException Устанавливает количество секунд, в течение которых драйвер будет ожидать выполнения объекта Statement, на заданное количество секунд. По умолчанию нет ограничений на время, разрешенное для завершения выполняемого оператора. Если лимит превышен, выбрасывается SQLTimeoutException. JDBC-драйвер должен применять это ограничение к методам execute, executeQuery и executeUpdate.
Примечание: Реализации JDBC-драйверов также могут применять это ограничение к методам ResultSet (подробности см. в документации поставщика драйвера).
Примечание: В случае пакетной обработки Statement определяется реализация, применяется ли время ожидания к отдельным командам SQL, добавленным с помощью метода addBatch, или ко всей партии команд SQL, вызываемых методом executeBatch (подробности см. в документации поставщика драйвера).
- Параметры:
-
seconds- новый лимит времени ожидания запроса в секундах; ноль означает, что лимита нет - Исключения:
-
SQLException- если возникает ошибка доступа к базе данных, этот метод вызывается для закрытого объектаStatementили условиеseconds >= 0не выполняется - См. также:
getQueryTimeout()
cancel
void cancel()
throws SQLException Отменяет этот объект Statement, если СУБД и драйвер поддерживают прерывание оператора SQL. Этот метод может использоваться одним потоком для отмены оператора, который выполняется другим потоком.
- Исключения:
-
SQLException- если возникает ошибка доступа к базе данных или этот метод вызывается для закрытого объектаStatement -
SQLFeatureNotSupportedException- если JDBC-драйвер не поддерживает этот метод
getWarnings
SQLWarning getWarnings()
throws SQLException Извлекает первое предупреждение, о котором сообщается при вызовах этого объекта Statement. Последующие предупреждения объекта Statement будут присоединены к этому объекту SQLWarning.
Цепочка предупреждений автоматически очищается каждый раз при (повторном) выполнении оператора. Этот метод не может быть вызван для закрытого объекта Statement; в противном случае будет выброшено SQLException.
Примечание: Если вы обрабатываете объект ResultSet, любые предупреждения, связанные с чтениями этого объекта ResultSet, будут присоединены к нему, а не к объекту Statement, который его создал.
- Возвращает:
- первый
SQLWarningобъект илиnullесли предупреждений нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement
clearWarnings
void clearWarnings()
throws SQLException Очищает все предупреждения, сообщенные об этом Statement объекте. После вызова этого метода метод getWarnings будет возвращать null до тех пор, пока новое предупреждение не будет сообщено для этого Statement объекта.
- Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement
setCursorName
void setCursorName(String name)
throws SQLException Устанавливает имя SQL курсора на заданное значение String, которое будет использоваться последующими Statement объектами execute методами. Это имя затем может быть использовано в операторах SQL позиционного обновления или удаления для идентификации текущей строки в ResultSet объекте, сгенерированном этим оператором. Если база данных не поддерживает позиционное обновление/удаление, этот метод является пустым. Для того, чтобы убедиться, что у курсора есть правильный уровень изоляции для поддержки обновлений, оператор курсора должен иметь форму SELECT FOR UPDATE. Если FOR UPDATE отсутствует, позиционные обновления могут завершиться неудачно.
Примечание: По определению, выполнение позиционных обновлений и удалений должно выполняться другим Statement объектом, отличным от объекта, который сгенерировал ResultSet объект, используемый для позиционирования. Также имена курсоров должны быть уникальными в рамках соединения.
- Параметры:
-
name- новое имя курсора, которое должно быть уникальным в рамках соединения - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement -
SQLFeatureNotSupportedException- если JDBC драйвер не поддерживает этот метод
execute
boolean execute(String sql)
throws SQLException Выполняет заданный SQL оператор, который может возвращать несколько результатов. В некоторых (редких) ситуациях один SQL оператор может возвращать несколько наборов результатов и/или счетчики обновлений. Обычно этим можно пренебречь, если вы не (1) выполняете хранимую процедуру, которая, как вы знаете, может возвращать несколько результатов, или (2) динамически выполняете неизвестную SQL строку.
Метод execute выполняет SQL оператор и указывает форму первого результата. Затем вы должны использовать методы getResultSet или getUpdateCount для извлечения результата и getMoreResults для перехода к любым последующим результатам.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- любой SQL оператор - Возвращает:
-
trueесли первый результат —ResultSetобъект;falseесли это счетчик обновлений или результатов нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, метод вызван дляPreparedStatementилиCallableStatement -
SQLTimeoutException- когда драйвер определил, что время ожидания, указанное методомsetQueryTimeout, истекло, и по крайней мере попытался отменить текущую операциюStatement - См. также:
-
getResultSet(),getUpdateCount(),getMoreResults()
getResultSet
ResultSet getResultSet()
throws SQLException Возвращает текущий результат в виде ResultSet объекта. Этот метод должен быть вызван только один раз на результат.
- Возвращает:
- текущий результат в виде
ResultSetобъекта илиnullесли результат — счетчик обновлений или результатов больше нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - См. также:
execute(java.lang.String)
getUpdateCount
int getUpdateCount()
throws SQLException Возвращает текущий результат как счетчик обновлений; если результат — ResultSet объект или результатов больше нет, возвращается -1. Этот метод должен быть вызван только один раз на результат.
- Возвращает:
- текущий результат как счетчик обновлений; -1, если текущий результат —
ResultSetобъект или результатов больше нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - См. также:
execute(java.lang.String)
getMoreResults
boolean getMoreResults()
throws SQLException Переходит к следующему результату этого Statement объекта, возвращает true если это ResultSet объект и неявно закрывает любой текущий ResultSet объект(ы), полученный методом getResultSet.
Результатов больше нет, когда выполняется следующее условие:
// stmt is a Statement object
((stmt.getMoreResults() == false) && (stmt.getUpdateCount() == -1))
- Возвращает:
-
trueесли следующий результат —ResultSetобъект;falseесли это счетчик обновлений или результатов больше нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - См. также:
execute(java.lang.String)
setFetchDirection
void setFetchDirection(int direction)
throws SQLException Даёт драйверу подсказку о направлении обработки строк в ResultSet объектах, созданных с использованием этого Statement объекта. Значение по умолчанию — ResultSet.FETCH_FORWARD.
Обратите внимание, что этот метод устанавливает направление извлечения по умолчанию для наборов результатов, сгенерированных этим Statement объектом. Каждый набор результатов имеет свои методы для получения и установки своего направления извлечения.
- Параметры:
-
direction- начальное направление обработки строк - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatementили заданное направление не является одним изResultSet.FETCH_FORWARD,ResultSet.FETCH_REVERSE, илиResultSet.FETCH_UNKNOWN - С:
- 1.2
- См. также:
getFetchDirection()
getFetchDirection
int getFetchDirection()
throws SQLException Возвращает направление извлечения строк из таблиц базы данных, которое является значением по умолчанию для наборов результатов, сгенерированных из этого Statement объекта. Если этот Statement объект не установил направление извлечения, вызвав метод setFetchDirection, возвращаемое значение зависит от реализации.
- Возвращает:
- значение по умолчанию для направления извлечения наборов результатов, сгенерированных из этого
Statementобъекта - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.2
- См. также:
setFetchDirection(int)
setFetchSize
void setFetchSize(int rows)
throws SQLException Даёт JDBC драйверу подсказку о количестве строк, которое должно быть извлечено из базы данных при необходимости получения дополнительных строк для ResultSet объектов, сгенерированных этим Statement. Если указанное значение равно нулю, подсказка игнорируется. Значение по умолчанию — ноль.
- Параметры:
-
rows- количество строк для извлечения - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatementили условиеrows >= 0не выполняется. - С:
- 1.2
- См. также:
getFetchSize()
getFetchSize
int getFetchSize()
throws SQLException Возвращает количество строк набора результатов, которое является значением по умолчанию для размера извлечения для ResultSet объектов, сгенерированных из этого Statement объекта. Если этот Statement объект не установил размер извлечения, вызвав метод setFetchSize, возвращаемое значение зависит от реализации.
- Возвращает:
- значение по умолчанию для размера извлечения наборов результатов, сгенерированных из этого
Statementобъекта - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.2
- См. также:
setFetchSize(int)
getResultSetConcurrency
int getResultSetConcurrency()
throws SQLException Возвращает конкуретность набора результатов для ResultSet объектов, сгенерированных этим Statement объектом.
- Возвращает:
- либо
ResultSet.CONCUR_READ_ONLYилиResultSet.CONCUR_UPDATABLE - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.2
getResultSetType
int getResultSetType()
throws SQLException Возвращает тип набора результатов для ResultSet объектов, сгенерированных этим Statement объектом.
- Возвращает:
- одно из
ResultSet.TYPE_FORWARD_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE, илиResultSet.TYPE_SCROLL_SENSITIVE - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.2
addBatch
void addBatch(String sql)
throws SQLException Добавляет заданный SQL команду к текущему списку команд для этого Statement объекта. Команды в этом списке могут быть выполнены как пакет с помощью метода executeBatch.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- обычно это SQLINSERTилиUPDATEоператор - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, драйвер не поддерживает пакетные обновления, метод вызван дляPreparedStatementилиCallableStatement - С:
- 1.2
- См. также:
-
executeBatch(),DatabaseMetaData.supportsBatchUpdates()
clearBatch
void clearBatch()
throws SQLException Очищает текущий список SQL-команд этого объекта Statement.
- Исключения:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытого объектаStatementили драйвер не поддерживает пакетные обновления - С момента:
- 1.2
- См. также:
-
addBatch(java.lang.String),DatabaseMetaData.supportsBatchUpdates()
executeBatch
int[] executeBatch()
throws SQLException Отправляет пакет команд в базу данных для выполнения и, если все команды выполнены успешно, возвращает массив счётчиков обновлений. Элементы массива, который возвращается, упорядочены так, чтобы соответствовать командам в пакете, которые упорядочены в соответствии с порядком их добавления в пакет. Элементы в массиве, возвращаемом методом executeBatch, могут быть следующими:
- Число большее или равное нулю -- указывает, что команда была обработана успешно и представляет собой счётчик обновлений, показывающий количество строк в базе данных, затронутых выполнением команды
- Значение
SUCCESS_NO_INFO-- указывает, что команда была обработана успешно, но количество затронутых строк неизвестноЕсли одна из команд в пакетном обновлении не выполняется должным образом, этот метод выбрасывает
BatchUpdateException, и драйвер JDBC может или не может продолжить обработку оставшихся команд в пакете. Однако поведение драйвера должно быть согласовано с конкретной СУБД, либо всегда продолжать обрабатывать команды, либо никогда не продолжать обрабатывать команды. Если драйвер продолжает обработку после сбоя, массив, возвращаемый методомBatchUpdateException.getUpdateCounts, будет содержать столько элементов, сколько команд в пакете, и по крайней мере один из элементов будет следующим: - Значение
EXECUTE_FAILED-- указывает, что команда не была выполнена успешно и встречается только в том случае, если драйвер продолжает обрабатывать команды после сбоя команды
Возможные реализации и возвращаемые значения были изменены в Java 2 SDK, Standard Edition, версия 1.3, для обеспечения возможности продолжения обработки команд в пакетном обновлении после того, как был сгенерирован объект BatchUpdateException.
- Возвращает:
- массив счётчиков обновлений, содержащий по одному элементу для каждой команды в пакете. Элементы массива упорядочены в соответствии с порядком добавления команд в пакет.
- Исключения:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытого объектаStatementили драйвер не поддерживает пакетные операторы. ВыбрасываетBatchUpdateException(подклассSQLException) если одна из команд, отправленных в базу данных, не выполняется должным образом или пытается вернуть набор результатов. -
SQLTimeoutException- когда драйвер определил, что значение тайм-аута, заданное методомsetQueryTimeout, было превышено и по крайней мере предпринял попытку отменить выполняемую в данный моментStatement - С момента:
- 1.2
- См. также:
-
addBatch(java.lang.String),DatabaseMetaData.supportsBatchUpdates()
getConnection
Connection getConnection()
throws SQLException Возвращает объект Connection, который породил этот объект Statement.
- Возвращает:
- соединение, которое породило этот оператор
- Исключения:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытого объектаStatement - С момента:
- 1.2
getMoreResults
boolean getMoreResults(int current)
throws SQLException Переходит к следующему результату для этого объекта Statement, обрабатывает любые текущие объект(ы) ResultSet в соответствии с инструкциями, заданными заданным флагом, и возвращает true, если следующий результат — объект ResultSet.
Нет больше результатов, когда выполняется следующее условие:
// stmt is a Statement object
((stmt.getMoreResults(current) == false) && (stmt.getUpdateCount() == -1))
- Параметры:
-
current- одно из следующихStatementконстант, указывающих, что должно произойти с текущими объектамиResultSet, полученными с помощью методаgetResultSet:Statement.CLOSE_CURRENT_RESULT,Statement.KEEP_CURRENT_RESULT, илиStatement.CLOSE_ALL_RESULTS - Возвращает:
-
trueесли следующий результат — объектResultSet;falseесли это счётчик обновлений или больше нет результатов - Исключения:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытого объектаStatementили переданный аргумент не является одним из следующих:Statement.CLOSE_CURRENT_RESULT,Statement.KEEP_CURRENT_RESULTилиStatement.CLOSE_ALL_RESULTS -
SQLFeatureNotSupportedException- еслиDatabaseMetaData.supportsMultipleOpenResultsвозвращаетfalseи либоStatement.KEEP_CURRENT_RESULT, либоStatement.CLOSE_ALL_RESULTSиспользуются в качестве аргумента. - С момента:
- 1.4
- См. также:
execute(java.lang.String)
getGeneratedKeys
ResultSet getGeneratedKeys()
throws SQLException Возвращает все автоматически сгенерированные ключи, созданные в результате выполнения этого объекта Statement. Если этот объект Statement не сгенерировал никаких ключей, возвращается пустой объект ResultSet.
Примечание: Если столбцы, представляющие автоматически сгенерированные ключи, не были указаны, реализация драйвера JDBC определит столбцы, которые лучше всего представляют автоматически сгенерированные ключи.
- Возвращает:
- объект
ResultSetсодержащий автоматически сгенерированные ключ(и), сгенерированные выполнением этого объектаStatement - Исключения:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытого объектаStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод - С момента:
- 1.4
executeUpdate
int executeUpdate(String sql,
int autoGeneratedKeys)
throws SQLException Выполняет заданный SQL-запрос и сообщает драйверу с помощью заданного флага о том, должны ли автоматически сгенерированные ключи, созданные этим объектом Statement, быть доступны для извлечения. Драйвер проигнорирует флаг, если SQL-запрос не является запросом INSERT, или SQL-запросом, способным возвращать автоматически сгенерированные ключи (список таких запросов зависит от поставщика).
Примечание: Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- SQL-запрос языка манипулирования данными (DML), напримерINSERT,UPDATEилиDELETE; или SQL-запрос, не возвращающий ничего, например, запрос DDL. -
autoGeneratedKeys- флаг, указывающий, должны ли автоматически сгенерированные ключи быть доступны для извлечения; одна из следующих констант:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS - Возвращает:
- либо (1) количество строк для SQL-запросов языка манипулирования данными (DML), либо (2) 0 для SQL-запросов, не возвращающих ничего
- Исключения:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытого объектаStatement, заданный SQL-запрос возвращает объектResultSet, заданная константа не является разрешённой, метод вызван для объектаPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод с константой Statement.RETURN_GENERATED_KEYS -
SQLTimeoutException- когда драйвер определил, что значение тайм-аута, заданное методомsetQueryTimeout, было превышено и по крайней мере предпринял попытку отменить выполняемую в данный моментStatement - С момента:
- 1.4
executeUpdate
int executeUpdate(String sql,
int[] columnIndexes)
throws SQLException Выполняет заданный SQL-запрос и сообщает драйверу, что автоматически сгенерированные ключи, указанные в заданном массиве, должны быть доступны для извлечения. Этот массив содержит индексы столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если SQL-запрос не является запросом INSERT, или SQL-запросом, способным возвращать автоматически сгенерированные ключи (список таких запросов зависит от поставщика).
Примечание: Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- SQL-запрос языка манипулирования данными (DML), напримерINSERT,UPDATEилиDELETE; или SQL-запрос, не возвращающий ничего, например, запрос DDL. -
columnIndexes- массив индексов столбцов, указывающих столбцы, которые должны быть возвращены из вставленной строки - Возвращает:
- либо (1) количество строк для SQL-запросов языка манипулирования данными (DML), либо (2) 0 для SQL-запросов, не возвращающих ничего
- Исключения:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытого объектаStatement, SQL-запрос возвращает объектResultSet, второй аргумент, переданный в этот метод, не является массивомint, элементы которого являются допустимыми индексами столбцов, метод вызван для объектаPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что значение тайм-аута, заданное методомsetQueryTimeout, было превышено и по крайней мере предпринял попытку отменить выполняемую в данный моментStatement - С момента:
- 1.4
executeUpdate
int executeUpdate(String sql,
String[] columnNames)
throws SQLException Выполняет заданный SQL-запрос и сообщает драйверу, что автоматически сгенерированные ключи, указанные в заданном массиве, должны быть доступны для извлечения. Этот массив содержит имена столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если SQL-запрос не является запросом INSERT, или SQL-запросом, способным возвращать автоматически сгенерированные ключи (список таких запросов зависит от поставщика).
Примечание: Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- оператор языка манипулирования данными SQL (DML), такой какINSERT,UPDATEилиDELETE; или оператор SQL, не возвращающий результат, например, оператор DDL. -
columnNames- массив имён столбцов, которые должны быть возвращены из добавленной строки - Возвращает:
- число строк для операторов
INSERT,UPDATE, илиDELETE, или 0 для операторов SQL, не возвращающих результат - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, оператор SQL возвращает объектResultSet, второй аргумент, переданный в этот метод, не является массивомString, элементы которого являются допустимыми именами столбцов, метод вызван дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если JDBC-драйвер не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что время ожидания, указанное методомsetQueryTimeout, истекло, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.4
execute
boolean execute(String sql,
int autoGeneratedKeys)
throws SQLException Выполняет заданный оператор SQL, который может возвращать несколько результатов, и сообщает драйверу, что любые автоматически сгенерированные ключи должны быть доступны для извлечения. Драйвер проигнорирует это сообщение, если оператор SQL не является оператором INSERT или оператором SQL, способным возвращать автоматически сгенерированные ключи (список таких операторов зависит от поставщика).
В некоторых (редких) случаях один оператор SQL может возвращать несколько наборов результатов и/или счётчиков обновлений. Обычно этим можно пренебречь, если вы (1) выполняете хранимую процедуру, о которой известно, что она может возвращать несколько результатов, или (2) динамически выполняете неизвестную строку SQL.
Метод execute выполняет оператор SQL и указывает вид первого результата. Затем необходимо использовать методы getResultSet или getUpdateCount для получения результата и getMoreResults для перехода к последующим результатам.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- любой оператор SQL -
autoGeneratedKeys- константа, указывающая, должны ли автоматически сгенерированные ключи быть доступны для извлечения с помощью методаgetGeneratedKeys; одна из следующих констант:Statement.RETURN_GENERATED_KEYSилиStatement.NO_GENERATED_KEYS - Возвращает:
-
true, если первый результат является объектомResultSet;false, если это счётчик обновлений или результатов нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, второй параметр, переданный в этот метод, не являетсяStatement.RETURN_GENERATED_KEYSилиStatement.NO_GENERATED_KEYS, метод вызван дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если JDBC-драйвер не поддерживает этот метод с константой Statement.RETURN_GENERATED_KEYS -
SQLTimeoutException- когда драйвер определил, что время ожидания, указанное методомsetQueryTimeout, истекло, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.4
- См. также:
-
getResultSet(),getUpdateCount(),getMoreResults(),getGeneratedKeys()
execute
boolean execute(String sql,
int[] columnIndexes)
throws SQLException Выполняет заданный оператор SQL, который может возвращать несколько результатов, и сообщает драйверу, что автоматически сгенерированные ключи, указанные в массиве, должны быть доступны для извлечения. Этот массив содержит индексы столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если оператор SQL не является оператором INSERT или оператором SQL, способным возвращать автоматически сгенерированные ключи (список таких операторов зависит от поставщика).
В некоторых (редких) случаях один оператор SQL может возвращать несколько наборов результатов и/или счётчиков обновлений. Обычно этим можно пренебречь, если вы (1) выполняете хранимую процедуру, о которой известно, что она может возвращать несколько результатов, или (2) динамически выполняете неизвестную строку SQL.
Метод execute выполняет оператор SQL и указывает вид первого результата. Затем необходимо использовать методы getResultSet или getUpdateCount для получения результата и getMoreResults для перехода к последующим результатам.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- любой оператор SQL -
columnIndexes- массив индексов столбцов в добавленной строке, которые должны быть доступны для извлечения с помощью методаgetGeneratedKeys - Возвращает:
-
true, если первый результат является объектомResultSet;false, если это счётчик обновлений или результатов нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, элементы массиваint, переданного в этот метод, не являются допустимыми индексами столбцов, метод вызван дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если JDBC-драйвер не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что время ожидания, указанное методомsetQueryTimeout, истекло, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.4
- См. также:
-
getResultSet(),getUpdateCount(),getMoreResults()
execute
boolean execute(String sql,
String[] columnNames)
throws SQLException Выполняет заданный оператор SQL, который может возвращать несколько результатов, и сообщает драйверу, что автоматически сгенерированные ключи, указанные в массиве, должны быть доступны для извлечения. Этот массив содержит имена столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если оператор SQL не является оператором INSERT или оператором SQL, способным возвращать автоматически сгенерированные ключи (список таких операторов зависит от поставщика).
В некоторых (редких) случаях один оператор SQL может возвращать несколько наборов результатов и/или счётчиков обновлений. Обычно этим можно пренебречь, если вы (1) выполняете хранимую процедуру, о которой известно, что она может возвращать несколько результатов, или (2) динамически выполняете неизвестную строку SQL.
Метод execute выполняет оператор SQL и указывает вид первого результата. Затем необходимо использовать методы getResultSet или getUpdateCount для получения результата и getMoreResults для перехода к последующим результатам.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
- Параметры:
-
sql- любой оператор SQL -
columnNames- массив имён столбцов в добавленной строке, которые должны быть доступны для извлечения с помощью методаgetGeneratedKeys - Возвращает:
-
true, если следующий результат является объектомResultSet;false, если это счётчик обновлений или результатов нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, элементы массиваString, переданного в этот метод, не являются допустимыми именами столбцов, метод вызван дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если JDBC-драйвер не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что время ожидания, указанное методомsetQueryTimeout, истекло, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.4
- См. также:
-
getResultSet(),getUpdateCount(),getMoreResults(),getGeneratedKeys()
getResultSetHoldability
int getResultSetHoldability()
throws SQLException Возвращает удерживаемость набора результатов для объектов ResultSet , сгенерированных этим объектом Statement.
- Возвращает:
- либо
ResultSet.HOLD_CURSORS_OVER_COMMIT, либоResultSet.CLOSE_CURSORS_AT_COMMIT - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.4
isClosed
boolean isClosed()
throws SQLException Возвращает, закрыт ли этот объект Statement. Объект Statement закрыт, если на нём был вызван метод close или если он был закрыт автоматически.
- Возвращает:
- true, если этот объект
Statementзакрыт; false, если он всё ещё открыт - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных - С:
- 1.6
setPoolable
void setPoolable(boolean poolable)
throws SQLException Запрашивает, должен ли объект Statement быть помещён в пул или нет. Указанное значение является подсказкой для реализации пула заявок, указывающей, хочет ли приложение, чтобы запрос был помещён в пул. Пул заявок может использовать подсказку по своему усмотрению.
Значение poolable для запроса применимо как к внутренним кэшам запросов, реализованным драйвером, так и к внешним кэшам запросов, реализованным серверами приложений и другими приложениями.
По умолчанию запрос Statement не является помещаемым в пул при создании, а запрос PreparedStatement и CallableStatement помещаются в пул при создании.
- Параметры:
-
poolable- запрос о том, чтобы запрос был помещён в пул, если значение true, и не помещаться в пул, если значение false - Выбрасывает:
-
SQLException- если этот метод вызван для закрытогоStatement - С:
- 1.6
isPoolable
boolean isPoolable()
throws SQLException Возвращает значение, указывающее, является ли Statement пулируемым.
- Возвращает:
-
trueеслиStatementпулируем;falseв противном случае - Выбрасывает:
-
SQLException- если этот метод вызван для закрытогоStatement - С:
- 1.6
- См. также:
setPoolable(boolean)
closeOnCompletion
void closeOnCompletion()
throws SQLException Указывает, что этот Statement будет закрыт, когда все его зависимые наборы результатов будут закрыты. Если выполнение Statement не производит наборов результатов, этот метод не имеет эффекта.
Примечание: Несколько вызовов closeOnCompletion не переключают эффект на этот Statement. Однако вызов closeOnCompletion влияет как на последующее выполнение операторов, так и на операторы, которые в настоящее время имеют открытые зависимые наборы результатов.
- Выбрасывает:
-
SQLException- если этот метод вызван для закрытогоStatement - С:
- 1.7
isCloseOnCompletion
boolean isCloseOnCompletion()
throws SQLException Возвращает значение, указывающее, будет ли этот Statement закрыт, когда все его зависимые наборы результатов будут закрыты.
- Возвращает:
-
trueеслиStatementбудет закрыт, когда все его зависимые наборы результатов будут закрыты;falseв противном случае - Выбрасывает:
-
SQLException- если этот метод вызван для закрытогоStatement - С:
- 1.7
getLargeUpdateCount
default long getLargeUpdateCount()
throws SQLException Получает текущий результат как количество обновлений; если результат является объектом ResultSet или результатов больше нет, возвращается -1. Этот метод следует вызывать только один раз на результат.
Этот метод следует использовать, когда возвращаемое количество строк может превысить Integer.MAX_VALUE.
Реализация по умолчанию выбросит UnsupportedOperationException
- Возвращает:
- текущий результат как количество обновлений; -1, если текущий результат является объектом
ResultSetили результатов больше нет - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.8
- См. также:
execute(java.lang.String)
setLargeMaxRows
default void setLargeMaxRows(long max)
throws SQLException Устанавливает предел максимального числа строк, которые может содержать любой объект ResultSet, созданный этим объектом Statement, до заданного значения. Если предел превышен, избыточные строки отбрасываются без уведомления.
Этот метод следует использовать, когда предел строк может превысить Integer.MAX_VALUE.
Реализация по умолчанию выбросит UnsupportedOperationException
- Параметры:
-
max- новый предел максимального числа строк; ноль означает отсутствие предела - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatementили условиеmax >= 0не выполняется - С:
- 1.8
- См. также:
getMaxRows()
getLargeMaxRows
default long getLargeMaxRows()
throws SQLException Возвращает максимальное количество строк, которые может содержать объект ResultSet, созданный этим объектом Statement. Если этот предел превышен, избыточные строки отбрасываются без уведомления.
Этот метод следует использовать, когда возвращаемый предел строк может превысить Integer.MAX_VALUE.
Реализация по умолчанию вернет 0
- Возвращает:
- текущее максимальное количество строк для объекта
ResultSet, созданного этим объектомStatement; ноль означает отсутствие предела - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных или этот метод вызван для закрытогоStatement - С:
- 1.8
- См. также:
setMaxRows(int)
executeLargeBatch
default long[] executeLargeBatch()
throws SQLException Отправляет пакет команд в базу данных для выполнения и, если все команды выполняются успешно, возвращает массив счётчиков обновлений. Элементы массива, возвращаемого методом, упорядочены в соответствии с командами в пакете, которые упорядочены в соответствии с порядком, в котором они были добавлены в пакет. Элементы массива, возвращаемого методом executeLargeBatch, могут быть следующими:
- Число больше или равно нулю — указывает, что команда была обработана успешно и является счётчиком обновлений, дающим количество строк в базе данных, затронутых выполнением команды
- Значение
SUCCESS_NO_INFO— указывает, что команда была обработана успешно, но количество затронутых строк неизвестноЕсли одна из команд в пакете обновлений не выполняется должным образом, этот метод выбрасывает
BatchUpdateException, и драйвер JDBC может или не может продолжить обработку оставшихся команд в пакете. Однако поведение драйвера должно быть совместимо с конкретной СУБД, либо всегда продолжать обработку команд, либо никогда не продолжать обработку команд. Если драйвер продолжает обработку после сбоя, массив, возвращаемый методомBatchUpdateException.getLargeUpdateCounts, будет содержать столько элементов, сколько команд в пакете, и по крайней мере один из элементов будет следующим: - Значение
EXECUTE_FAILED— указывает, что команда не была выполнена успешно и появляется только в том случае, если драйвер продолжает обработку команд после сбоя
Этот метод следует использовать, когда возвращаемое количество строк может превысить Integer.MAX_VALUE.
Реализация по умолчанию выбросит UnsupportedOperationException
- Возвращает:
- массив счётчиков обновлений, содержащий по одному элементу для каждой команды в пакете. Элементы массива упорядочены в соответствии с порядком добавления команд в пакет.
- Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatementили драйвер не поддерживает пакетные операторы. ВыбрасываетBatchUpdateException(подклассSQLException), если одна из команд, отправленных в базу данных, не выполняется должным образом или пытается вернуть набор результатов. -
SQLTimeoutException- когда драйвер определил, что значение таймаута, указанное методомsetQueryTimeout, было превышено и по крайней мере попытался отменить текущее выполняемоеStatement - С:
- 1.8
- См. также:
-
addBatch(java.lang.String),DatabaseMetaData.supportsBatchUpdates()
executeLargeUpdate
default long executeLargeUpdate(String sql)
throws SQLException Выполняет заданный SQL-запрос, который может быть оператором INSERT, UPDATE, или DELETE или SQL-запросом, который ничего не возвращает, например, SQL-оператором DDL.
Этот метод следует использовать, когда возвращаемое количество строк может превысить Integer.MAX_VALUE.
Примечание: Этот метод не может быть вызван для PreparedStatement или CallableStatement.
Реализация по умолчанию выбросит UnsupportedOperationException
- Параметры:
-
sql- оператор SQL Data Manipulation Language (DML), такой какINSERT,UPDATEилиDELETE; или SQL-запрос, который ничего не возвращает, например, оператор DDL. - Возвращает:
- либо (1) количество строк для операторов SQL Data Manipulation Language (DML), либо (2) 0 для SQL-запросов, которые ничего не возвращают
- Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызван для закрытогоStatement, заданный SQL-запрос генерирует объектResultSet, метод вызван дляPreparedStatementилиCallableStatement -
SQLTimeoutException- когда драйвер определил, что значение таймаута, заданное методомsetQueryTimeout, было превышено и по крайней мере попытался отменить текущее выполняемоеStatement - С:
- 1.8
executeLargeUpdate
default long executeLargeUpdate(String sql,
int autoGeneratedKeys)
throws SQLException Выполняет заданный SQL-запрос и сигнализирует драйверу с помощью заданного флага о том, должны ли автоматически сгенерированные ключи, произведённые этим объектом Statement, быть доступными для извлечения. Драйвер проигнорирует флаг, если SQL-запрос не является оператором INSERT, или SQL-запросом, способным возвращать автоматически сгенерированные ключи (список таких запросов зависит от поставщика).
Этот метод следует использовать, когда возвращаемое количество строк может превысить Integer.MAX_VALUE.
Примечание: Этот метод не может быть вызван для PreparedStatement или CallableStatement.
Реализация по умолчанию выбросит SQLFeatureNotSupportedException
- Параметры:
-
sql- оператор языка манипулирования данными SQL (DML), например,INSERT,UPDATEилиDELETE; или оператор SQL, который ничего не возвращает, например, оператор DDL. -
autoGeneratedKeys- флаг, указывающий, должны ли автоматически сгенерированные ключи быть доступны для извлечения; одно из следующих констант:Statement.RETURN_GENERATED_KEYSStatement.NO_GENERATED_KEYS - Возвращает:
- либо (1) количество строк для операторов языка манипулирования данными SQL (DML), либо (2) 0 для операторов SQL, которые ничего не возвращают
- Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызывается для закрытойStatement, заданный оператор SQL возвращаетResultSetобъект, заданная константа не является одной из разрешенных, метод вызывается дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод с константой Statement.RETURN_GENERATED_KEYS -
SQLTimeoutException- когда драйвер определил, что значение таймаута, заданное методомsetQueryTimeout, было превышено, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.8
executeLargeUpdate
default long executeLargeUpdate(String sql,
int[] columnIndexes)
throws SQLException Выполняет заданный оператор SQL и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в заданном массиве, должны быть доступны для извлечения. Этот массив содержит индексы столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если оператор SQL не является оператором INSERT или оператором SQL, способным возвращать автоматически сгенерированные ключи (список таких операторов зависит от поставщика).
Этот метод следует использовать, когда возвращаемое количество строк может превышать Integer.MAX_VALUE.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
Реализация по умолчанию выбросит SQLFeatureNotSupportedException
- Параметры:
-
sql- оператор языка манипулирования данными SQL (DML), например,INSERT,UPDATEилиDELETE; или оператор SQL, который ничего не возвращает, например, оператор DDL. -
columnIndexes- массив индексов столбцов, указывающих столбцы, которые должны быть возвращены из вставленной строки - Возвращает:
- либо (1) количество строк для операторов языка манипулирования данными SQL (DML), либо (2) 0 для операторов SQL, которые ничего не возвращают
- Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызывается для закрытойStatement, оператор SQL возвращаетResultSetобъект, второй аргумент, переданный в этот метод, не является массивомint, элементы которого являются допустимыми индексами столбцов, метод вызывается дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что значение таймаута, заданное методомsetQueryTimeout, было превышено, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.8
executeLargeUpdate
default long executeLargeUpdate(String sql,
String[] columnNames)
throws SQLException Выполняет заданный оператор SQL и сигнализирует драйверу, что автоматически сгенерированные ключи, указанные в заданном массиве, должны быть доступны для извлечения. Этот массив содержит имена столбцов в целевой таблице, которые содержат автоматически сгенерированные ключи, которые должны быть доступны. Драйвер проигнорирует массив, если оператор SQL не является оператором INSERT или оператором SQL, способным возвращать автоматически сгенерированные ключи (список таких операторов зависит от поставщика).
Этот метод следует использовать, когда возвращаемое количество строк может превышать Integer.MAX_VALUE.
Примечание:Этот метод не может быть вызван для PreparedStatement или CallableStatement.
Реализация по умолчанию выбросит SQLFeatureNotSupportedException
- Параметры:
-
sql- оператор языка манипулирования данными SQL (DML), например,INSERT,UPDATEилиDELETE; или оператор SQL, который ничего не возвращает, например, оператор DDL. -
columnNames- массив имён столбцов, которые должны быть возвращены из вставленной строки - Возвращает:
- либо количество строк для
INSERT,UPDATE, илиDELETEоператоров, либо 0 для операторов SQL, которые ничего не возвращают - Выбрасывает:
-
SQLException- если произошла ошибка доступа к базе данных, этот метод вызывается для закрытойStatement, оператор SQL возвращаетResultSetобъект, второй аргумент, переданный в этот метод, не является массивомString, элементы которого являются допустимыми именами столбцов, метод вызывается дляPreparedStatementилиCallableStatement -
SQLFeatureNotSupportedException- если драйвер JDBC не поддерживает этот метод -
SQLTimeoutException- когда драйвер определил, что значение таймаута, заданное методомsetQueryTimeout, было превышено, и он по крайней мере попытался отменить текущее выполнениеStatement - С:
- 1.8
enquoteLiteral
default String enquoteLiteral(String val)
throws SQLException Возвращает String в одинарных кавычках. Любое вхождение одинарной кавычки в строке будет заменено на две одинарные кавычки.
| Значение | Результат |
|---|---|
| Привет | 'Привет' |
| Доброе утро | 'Доброе'' утро' |
| 'Доброе'' утро' | '''Доброе'''' утро''' |
| Я'' | 'Я'''''' |
- Примечание по реализации:
- Реализации драйверов JDBC могут потребоваться предоставить свою собственную реализацию этого метода, чтобы удовлетворить требованиям базового источника данных.
- Параметры:
-
val- строка символов - Возвращает:
- Строка в одинарных кавычках, в которой каждая одинарная кавычка заменена на две одинарные кавычки
- Выбрасывает:
-
NullPointerException- если valnull -
SQLException- если произошла ошибка доступа к базе данных - С:
- 9
enquoteIdentifier
default String enquoteIdentifier(String identifier,
boolean alwaysQuote)
throws SQLException Возвращает идентификатор SQL. Если identifier — это простой идентификатор SQL:
- Возвращает исходное значение, если
alwaysQuote—false - Возвращает разделитель идентификатора, если
alwaysQuote—true
identifier не является простым идентификатором SQL, identifier будет заключено в двойные кавычки, если они ещё не присутствуют. Если источник данных не поддерживает двойные кавычки для разделителей идентификаторов, идентификатор должен быть заключен в строку, возвращаемую из DatabaseMetaData.getIdentifierQuoteString(). Если источник данных не поддерживает разделители идентификаторов, необходимо выбросить SQLFeatureNotSupportedException.
Будет выброшен SQLException если identifier содержит символы, недопустимые в разделителе идентификатора, или длина идентификатора неверна для источника данных.
- Требования к реализации:
- Реализация по умолчанию использует следующие критерии для определения допустимого простого идентификатора SQL:
- Строка не заключена в двойные кавычки
- Первый символ — это буквенный символ от a до z или от A до Z
- Имя содержит только буквенно-цифровые символы или символ "_"
SQLExceptionесли:-
identifierсодержитnullсимвол или двойные кавычки и не является простым идентификатором SQL. - Длина
identifierменьше 1 или больше 128 символов
идентификатор всегдаЗаключатьВКавычки Результат Привет false Привет Привет true "Привет" Доброе утро false "Доброе утро" "Брюс Уэйн" false "Брюс Уэйн" "Брюс Уэйн" true "Брюс Уэйн" ДоброеУтро$ false "ДоброеУтро$" Привет"Мир false SQLException "Привет"Мир" false SQLException - Примечание по реализации:
- Реализации драйверов JDBC могут потребоваться предоставить свою собственную реализацию этого метода, чтобы удовлетворить требованиям базового источника данных.
- Параметры:
-
identifier- идентификатор SQL -
alwaysQuote- указывает, должен ли простой идентификатор SQL возвращаться как идентификатор в кавычках - Возвращает:
- Простой идентификатор SQL или разделитель идентификатора
- Выбрасывает:
-
SQLException- если идентификатор не является допустимым идентификатором -
SQLFeatureNotSupportedException- если источник данных не поддерживает разделители идентификаторов -
NullPointerException- если идентификаторnull - С:
- 9
isSimpleIdentifier
default boolean isSimpleIdentifier(String identifier)
throws SQLException Определяет, является ли identifier простым идентификатором SQL.
- Требования к реализации:
- По умолчанию используется следующий набор критериев для определения допустимого простого идентификатора SQL:
- Строка не заключена в двойные кавычки
- Первый символ — это буквенный символ от a до z или от A до Z
- Строка содержит только буквенно-цифровые символы или символ "_"
- Длина строки находится в диапазоне от 1 до 128 символов включительно
Идентификатор Простой идентификатор Привет true G'Day false "Брюс Уэйн" false GoodDay$ false Привет"Мир false "Привет"Мир" false - Примечание реализации:
- Реализация драйвера JDBC может потребовать предоставления собственной реализации этого метода для удовлетворения требований базового источника данных.
- Параметры:
-
identifier- идентификатор SQL - Возвращает:
- true, если это простой идентификатор SQL, иначе false
- Выбрасывает:
-
NullPointerException- если идентификаторnull -
SQLException- если произошла ошибка доступа к базе данных - С:
- 9
enquoteNCharLiteral
default String enquoteNCharLiteral(String val)
throws SQLException Возвращает строку, представляющую буквенно-цифровой литерал Национального набора символов, заключенный в одинарные кавычки и префикс с заглавной буквой N. Любое вхождение одиночной кавычки в строке будет заменено на две одинарные кавычки.
| Значение | Результат |
|---|---|
| Привет | N'Привет' |
| G'Day | N'G''Day' |
| 'G''Day' | N'''G''''Day''' |
| I'''M | N'I''''''M' |
| N'Привет' | N'N''Привет''' |
- Примечание реализации:
- Реализация драйвера JDBC может потребовать предоставления собственной реализации этого метода для удовлетворения требований базового источника данных. Реализация enquoteNCharLiteral может принимать другой набор символов, чем реализация enquoteLiteral того же драйвера.
- Параметры:
-
val- строка символов - Возвращает:
- результат замены каждого символа одиночной кавычки в аргументе на два символа одиночной кавычки, а затем префикса 'N'.
- Выбрасывает:
-
NullPointerException- если valnull -
SQLException- если произошла ошибка доступа к базе данных - С:
- 9
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/Statement.html