Назад к вопросам
Middle
69
questionbank

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

Sobes Copilot

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

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

sobes.tech AI

Тип данных SQL Тип данных Java Описание
CHAR, VARCHAR, LONGVARCHAR String Символьные строки
NUMERIC, DECIMAL BigDecimal Числа с фиксированной точкой
BIT, BOOLEAN boolean Логические значения
TINYINT byte Целое число от -128 до 127
SMALLINT short Целое число от -32768 до 32767
INTEGER int Целое число
BIGINT long Большое целое число
REAL float Число с плавающей точкой одинарной точности
FLOAT, DOUBLE double Число с плавающей точкой двойной точности
BINARY, VARBINARY, LONGVARBINARY byte[] Двоичные данные
DATE java.sql.Date Дата (год, месяц, день)
TIME java.sql.Time Время (час, минута, секунда)
TIMESTAMP java.sql.Timestamp Дата и время с миллисекундами
BLOB java.sql.Blob Двоичный объект большого размера
CLOB java.sql.Clob Символьный объект большого размера
ARRAY java.sql.Array Массив значений
STRUCT java.sql.Struct Структурированный тип
REF java.sql.Ref Ссылка на структурированный тип
DATALINK java.net.URL Ссылка на внешний ресурс
JAVA_OBJECT Object Сериализованный объект Java (зависит от реализации)
ROWID java.sql.RowId Идентификатор строки (зависит от СУБД)
NCHAR, NVARCHAR, LONGNVARCHAR String Национализируемые символьные строки
NCLOB java.sql.NClob Национализируемый символьный объект большого размера
SQLXML java.sql.SQLXML XML-данные

JDBC (Java Database Connectivity) специфицирует стандартные SQL-типы данных в классе java.sql.Types. Эти типы данных представляют собой числовые константы. JDBC-драйверы маппят эти SQL-типы данных на подходящие типы данных Java при чтении данных из базы (например, с использованием методов getXXX() класса ResultSet) и при записи данных в базу (например, с использованием методов setXXX() класса PreparedStatement).

Связь определяется тем, как JDBC-драйвер конкретной базы данных реализует отображение между внутренними типами данных базы и стандартными java.sql.Types, а затем на типы данных Java. Это отображение документировано в спецификации JDBC и может незначительно отличаться между драйверами, хотя основные маппинги, приведенные в таблице, являются стандартными.

Пример получения данных из ResultSet:

// Предполагается, что rs - это ResultSet
String name = rs.getString("column_name_varchar");
int id = rs.getInt("column_name_integer");
BigDecimal value = rs.getBigDecimal("column_name_numeric");
Date date = rs.getDate("column_name_date");

Пример установки параметров в PreparedStatement:

// Предполагается, что pstmt - это PreparedStatement
String name = "Test Name";
int id = 123;
BigDecimal value = new BigDecimal("100.50");
Date date = new Date(System.currentTimeMillis());

pstmt.setString(1, name); // 1 - номер параметра (начиная с 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);

JDBC старается обеспечить максимальную совместимость, но для специфических или вендорно-зависимых типов данных могут потребоваться особые подходы или использование методов getObject() / setObject() с последующим приведением типов или проверкой с помощью instanceof.