Назад к вопросам
Junior
73
questionbank

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

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Основные типы данных JDBC определены в классе java.sql.Types. Они представляют стандартные SQL-типы. JVM-типы данных в Java определены в спецификации языка. JDBC предоставляет отображение (mapping) между этими двумя наборами типов.

Основные типы в java.sql.Types:

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • REAL
  • FLOAT
  • DOUBLE
  • DECIMAL
  • NUMERIC
  • CHAR
  • VARCHAR
  • LONGVARCHAR
  • DATE
  • TIME
  • TIMESTAMP
  • BINARY
  • VARBINARY
  • LONGVARBINARY
  • BLOB
  • CLOB
  • NCHAR
  • NVARCHAR
  • LONGNVARCHAR
  • NCLOB
  • SQLXML

Отображение между 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);
}