Перечислите основные типы данных, используемые в JDBC, и объясните, как они связаны с типами данных в Java.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Основные типы данных JDBC определены в классе java.sql.Types. Они представляют стандартные SQL-типы. JVM-типы данных в Java определены в спецификации языка. JDBC предоставляет отображение (mapping) между этими двумя наборами типов.
Основные типы в java.sql.Types:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Отображение между JDBC-типами и Java-типами при получении данных (из ResultSet):
| JDBC Type | Java Type (get) |
Notes |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Рекомендуется |
CHAR, VARCHAR, LONGVARCHAR |
String |
|
DATE |
java.sql.Date |
|
TIME |
java.sql.Time |
|
TIMESTAMP |
java.sql.Timestamp |
|
BINARY, VARBINARY, LONGVARBINARY |
byte[] |
|
BLOB |
java.sql.Blob |
|
CLOB |
java.sql.Clob |
|
NCHAR, NVARCHAR, LONGNVARCHAR |
String |
|
NCLOB |
java.sql.NClob |
|
SQLXML |
java.sql.SQLXML |
Примечание: Для числовых типов, помимо примитивных типов, можно использовать соответствующие классы-обертки (Boolean, Byte, Short, Integer, Long, Float, Double) для обработки значений NULL.
Отображение при установке данных (в PreparedStatement): как правило, используется обратное отображение, но есть исключения и предпочтения. Например, для DECIMAL лучше использовать BigDecimal.
Пример использования:
// Метод получения данных из ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Получаем строковое значение из колонки
return rs.getString(columnName);
}
// Метод установки параметра в PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Устанавливаем целочисленное значение в параметр запроса
ps.setInt(parameterIndex, value);
}