- Использование базовых типов данных
- Сопоставление типов данных
- Извлечение данных в виде строки
- Извлечение данных по типу данных
- Обновление данных по типу данных
- Обновление по параметризированному запросу
- Передача параметров хранимой процедуре
- Извлечение параметров из хранимой процедуры
- Class Date
- Constructor Summary
- Method Summary
- Methods declared in class java.util.Date
- Methods declared in class java.lang.Object
- Constructor Details
- Date
- Date
- Method Details
- setTime
- valueOf
- toString
- getHours
- getMinutes
- getSeconds
- setHours
- setMinutes
- setSeconds
- valueOf
- toLocalDate
- toInstant
- Тип date sql java
- Constructor Summary
- Method Summary
- Methods inherited from class java.util.Date
- Methods inherited from class java.lang.Object
- Constructor Detail
- Date
- Date
- Method Detail
- setTime
- valueOf
- toString
- getHours
- getMinutes
- getSeconds
- setHours
- setMinutes
- setSeconds
- valueOf
- toLocalDate
- toInstant
Использование базовых типов данных
Драйвер Microsoft JDBC Driver для SQL Server использует базовые типы данных JDBC для преобразования типов данных SQL Server в формат языка программирования Java и обратно. Драйвер JDBC обеспечивает поддержку API JDBC 4.0, в том числе типа данных SQLXML и типов данных Юникода для национальных символов: NCHAR, NVARCHAR, LONGNVARCHAR и NCLOB.
Сопоставление типов данных
В следующей таблице перечислены все сопоставления по умолчанию между базовыми типами данных SQL Server, типами данных JDBC и типами данных языка программирования Java:
1 Чтобы использовать java.sql.Time с типом времени SQL Server, нужно задать для свойства подключения sendTimeAsDatetime значение «false».
2 Значения datetimeoffset можно получить программным образом с помощью класса DateTimeOffset.
3 Обратите внимание, что значения java.sql.Timestamp больше нельзя использовать для сравнения значений из столбца datetime, начиная с SQL Server 2016. Это ограничение обусловлено изменением на стороне сервера, которое иначе преобразует datetime в datetime2, в результате чего получаются не равнозначные значения. Чтобы решить эту проблему, можно либо изменить столбцы datetime на datetime2(3), использовать строку вместо java.sql.Timestamp или изменить уровень совместимости базы данных на 120 или ниже.
В следующих разделах приводятся примеры использования драйвера JDBC и базовых типов данных. Более подробный пример использования базовых типов данных в приложении Java см. в разделе Образец базовых типов данных.
Извлечение данных в виде строки
Если вам нужно получить из источника данные, соответствующие каким-либо базовым типам данных JDBC, и просмотреть их в виде строки, или если строго типизированные данные не требуются, вы можете воспользоваться методом getString класса SQLServerResultSet, как показано далее:
try(Statement stmt = con.createStatement();)
Извлечение данных по типу данных
Если вам нужно получить из источника данные известного типа, воспользуйтесь одним из методов get класса SQLServerResultSet, также известных как методы получения. С методами get можно использовать имя столбца или его индекс:
try(Statement stmt = con.createStatement();)
Применение getUnicodeStream и getBigDecimal в сочетании с методами масштабирования считается устаревшим и не поддерживается драйвером JDBC.
Обновление данных по типу данных
Если вам нужно обновить значение поля в источнике данных, воспользуйтесь одним из методов update класса SQLServerResultSet. В следующем примере для обновления данных в источнике используется метод updateInt совместно с методом updateRow:
try (Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);)
Драйвер JDBC не может обновить столбец SQL Server, если имя столбца длиннее, чем 127 символов. При попытке обновить столбец, имя которого длиннее 127 символов, возникнет исключение.
Обновление по параметризированному запросу
Если вам нужно обновить данные в источнике с помощью параметризированного запроса, вы можете задать тип данных для параметров одним из методов set класса SQLServerPreparedStatement, также известных как методы задания. В следующем примере метод prepareStatement используется для предварительной компиляции параметризированного запроса, затем метод setString задает строковое значение параметра, после чего вызывается метод executeUpdate.
try(PreparedStatement pstmt = con.prepareStatement("UPDATE employee SET fname = ? WHERE (lname = 'Brown')");)
Дополнительные сведения о параметризованных запросах см. в этой статье.
Передача параметров хранимой процедуре
Если вам нужно передать параметры типа хранимой процедуре, вы можете задать параметры по имени или индексу с помощью методов set класса SQLServerCallableStatement. В следующем примере метод prepareCall используется для вызова хранимой процедуры, затем с помощью метода setString задается параметр для вызова, после чего вызывается метод executeQuery.
try(CallableStatement cstmt = con.prepareCall("");)
В данном примере возвращается результирующий набор с результатами запуска хранимой процедуры.
Дополнительные сведения об использовании драйвера JDBC с хранимыми процедурами и входными параметрами см. в этой статье.
Извлечение параметров из хранимой процедуры
Если вам нужно получить параметры обратно из хранимой процедуры, то нужно сначала зарегистрировать параметр OUT по имени или индексу при помощи метода registerOutParameter класса SQLServerCallableStatement, а затем после вызова хранимой процедуры назначить возвращаемый параметр OUT надлежащей переменной. В следующем примере сначала используется метод prepareCall для настройки вызова хранимой процедуры, затем — метод registerOutParameter для настройки параметра OUT, затем — метод setString для задания параметра вызова, после чего вызывается метод executeQuery. Значение, возвращаемое параметром OUT хранимой процедуры, извлекается с помощью метода getShort.
try(CallableStatement cstmt = con.prepareCall("");)
В дополнение к возвращаемому параметру OUT также можно вернуть результирующий набор с результатами запуска хранимой процедуры.
Дополнительные сведения об использовании драйвера JDBC с хранимыми процедурами и выходными параметрами см. в этой статье.
Class Date
A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT.
To conform with the definition of SQL DATE , the millisecond values wrapped by a java.sql.Date instance must be ‘normalized’ by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.
Constructor Summary
Method Summary
This method always throws an UnsupportedOperationException and should not be used because SQL Date values do not have a time component.
Obtains an instance of Date from a LocalDate object with the same year, month and day of month value as the given LocalDate .
Methods declared in class java.util.Date
Methods declared in class java.lang.Object
Constructor Details
Date
Constructs a Date object initialized with the given year, month, and day. The result is undefined if a given argument is out of bounds.
Date
Constructs a Date object using the given milliseconds time value. If the given milliseconds value contains time information, the driver will set the time components to the time in the default time zone (the time zone of the Java virtual machine running the application) that corresponds to zero GMT.
Method Details
setTime
Sets an existing Date object using the given milliseconds time value. If the given milliseconds value contains time information, the driver will set the time components to the time in the default time zone (the time zone of the Java virtual machine running the application) that corresponds to zero GMT.
valueOf
toString
getHours
This method is deprecated and should not be used because SQL Date values do not have a time component.
getMinutes
This method is deprecated and should not be used because SQL Date values do not have a time component.
getSeconds
This method is deprecated and should not be used because SQL Date values do not have a time component.
setHours
This method is deprecated and should not be used because SQL Date values do not have a time component.
setMinutes
This method is deprecated and should not be used because SQL Date values do not have a time component.
setSeconds
This method is deprecated and should not be used because SQL Date values do not have a time component.
valueOf
Obtains an instance of Date from a LocalDate object with the same year, month and day of month value as the given LocalDate . The provided LocalDate is interpreted as the local date in the local time zone.
toLocalDate
toInstant
This method always throws an UnsupportedOperationException and should not be used because SQL Date values do not have a time component.
Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2023, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.
Тип date sql java
A thin wrapper around a millisecond value that allows JDBC to identify this as an SQL DATE value. A milliseconds value represents the number of milliseconds that have passed since January 1, 1970 00:00:00.000 GMT. To conform with the definition of SQL DATE , the millisecond values wrapped by a java.sql.Date instance must be ‘normalized’ by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.
Constructor Summary
Method Summary
This method always throws an UnsupportedOperationException and should not be used because SQL Date values do not have a time component.
Obtains an instance of Date from a LocalDate object with the same year, month and day of month value as the given LocalDate .
Methods inherited from class java.util.Date
Methods inherited from class java.lang.Object
Constructor Detail
Date
@Deprecated public Date(int year, int month, int day)
Constructs a Date object initialized with the given year, month, and day. The result is undefined if a given argument is out of bounds.
Date
Constructs a Date object using the given milliseconds time value. If the given milliseconds value contains time information, the driver will set the time components to the time in the default time zone (the time zone of the Java virtual machine running the application) that corresponds to zero GMT.
Method Detail
setTime
public void setTime(long date)
Sets an existing Date object using the given milliseconds time value. If the given milliseconds value contains time information, the driver will set the time components to the time in the default time zone (the time zone of the Java virtual machine running the application) that corresponds to zero GMT.
valueOf
toString
getHours
This method is deprecated and should not be used because SQL Date values do not have a time component.
getMinutes
This method is deprecated and should not be used because SQL Date values do not have a time component.
getSeconds
This method is deprecated and should not be used because SQL Date values do not have a time component.
setHours
@Deprecated public void setHours(int i)
This method is deprecated and should not be used because SQL Date values do not have a time component.
setMinutes
@Deprecated public void setMinutes(int i)
This method is deprecated and should not be used because SQL Date values do not have a time component.
setSeconds
@Deprecated public void setSeconds(int i)
This method is deprecated and should not be used because SQL Date values do not have a time component.
valueOf
Obtains an instance of Date from a LocalDate object with the same year, month and day of month value as the given LocalDate . The provided LocalDate is interpreted as the local date in the local time zone.
toLocalDate
Converts this Date object to a LocalDate The conversion creates a LocalDate that represents the same date value as this Date in local time zone
toInstant
This method always throws an UnsupportedOperationException and should not be used because SQL Date values do not have a time component.
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2023, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.