Основные сведения о различиях между типами данных
Существует ряд различий между типами данных языка программирования Java и типами данных SQL Server. Драйвер Microsoft JDBC для SQL Server помогает упростить эти различия с помощью различных типов преобразований.
Символьные типы
Типы данных строки символов JDBC — CHAR, VARCHAR, и LONGVARCHAR. Драйвер JDBC обеспечивает поддержку API-интерфейса JDBC 4.0. Типы данных строки символов JDBC версии 4.0 также возможны — NCHAR, NVARCHAR, and LONGNVARCHAR. Эти новые типы символьных строк поддерживают собственные символьные типы Java в формате Юникода и исключают необходимость выполнять какие-либо преобразования из ANSI в Юникод или из Юникода в ANSI.
Тип | Описание |
---|---|
Фиксированная длина | Типы данных char и nchar SQL Server сопоставляются непосредственно с типами JDBC CHAR и NCHAR. Они представляют собой типы фиксированной длины с заполнением, предоставляемым сервером, при условии, что для столбца установлено значение SET ANSI_PADDING ON . Заполнение всегда включено для nchar, а что касается char, то в случае, если на сервере заполнение для столбцов символьных типов не предусмотрено, то заполнение добавляет драйвер JDBC. |
Переменная длина | Типы varchar и nvarchar SQL Server сопоставляются непосредственно с типами JDBC VARCHAR и NVARCHAR соответственно. |
Long | Типы текста и ntext SQL Server сопоставляются с типом JDBC LONGVARCHAR и LONGNVARCHAR соответственно. Это устаревшие типы, начиная с SQL Server 2005 (9.x), поэтому вместо этого следует использовать типы больших значений, varchar(max) или nvarchar(max). При использовании методов update<Numeric Type> и updateObject (int, java.lang.Object) по отношению к серверным столбцам text и ntext произойдет сбой. Однако использование метода setObject с указанным символьным типом преобразования по отношению к серверным столбцам text и ntext поддерживается. |
Типы двоичных строк
Двоичные строковые типы JDBC BINARY, VARBINARY и LONGVARBINARY.
Тип | Описание |
---|---|
Фиксированная длина | Двоичный тип SQL Server сопоставляется непосредственно с типом JDBC BINARY. Это тип фиксированной длины с заполнением, предоставляемым сервером в случае, если для столбца установлено значение SET ANSI_PADDING ON. Если на сервере заполнение для столбцов символьных типов не предусмотрено, то заполнение добавляет драйвер JDBC. Тип метки времени SQL Server — это тип JDBC BINARY с фиксированной длиной 8 байт. |
Переменная длина | Тип varbinary SQL Server сопоставляется с типом JDBC VARBINARY. Тип udt в SQL Server сопоставляется с JDBC как тип VARBINARY . |
Long | Тип образа SQL Server сопоставляется с типом JDBC LONGVARBINARY. Этот тип устарел, начиная с SQL Server 2005 (9.x), поэтому вместо этого следует использовать большой тип значения varbinary(max). |
Точные числовые типы
Точные числовые типы JDBC непосредственно сопоставляются с аналогичными типами SQL Server.
Тип | Описание |
---|---|
BIT | Тип BIT JDBC представляет единственный бит, который может иметь значение 0 или 1. Это сопоставляется с типом бита SQL Server. |
TINYINT | Тип JDBC TINYINT представляет единственный байт. Это сопоставляется с типом крошечного набора SQL Server. |
SMALLINT | Тип JDBC SMALLINT представляет 16-разрядное целочисленное значение со знаком. Это сопоставляется с типом небольшого размера SQL Server. |
INTEGER | Тип JDBC INTEGER представляет 32-разрядное целочисленное значение со знаком. Это сопоставляется с типом int SQL Server. |
BIGINT | Тип JDBC BIGINT представляет 64-разрядное целочисленное значение со знаком. Это сопоставляется с типом bigint SQL Server. |
NUMERIC | Тип JDBC NUMERIC представляет значение десятичного числа постоянной точности, которое хранит значения идентичной точности. Тип NUMERIC сопоставляется с числовым типом SQL Server. |
DECIMAL | Тип JDBC DECIMAL представляет значение десятичного числа постоянной точности, которое хранит значения по крайней мере указанной точности. Тип DECIMAL сопоставляется с десятичным типом SQL Server. Тип JDBC DECIMAL также сопоставляется с типами SQL Server money и smallmoney , которые являются конкретными десятичными типами фиксированной точности, хранящимися в 8 и 4 байтах соответственно. |
Приблизительные числовые типы
Приблизительными числовыми типами JDBC являются REAL, DOUBLE и FLOAT.
Тип | Описание |
---|---|
real | Тип JDBC REAL имеет семь цифр точности (одна точность) и сопоставляется непосредственно с реальным типом SQL Server. |
DOUBLE | Тип JDBC DOUBLE имеет 15 цифр точности (двойная точность) и сопоставляется с типом с плавающей запятой SQL Server. Тип JDBC FLOAT является синонимом DOUBLE. В связи с возможной путаницей между FLOAT и DOUBLE предпочтительным является DOUBLE. |
Типы даты и времени
Тип JDBC TIMESTAMP сопоставляется с типами даты и малого времени SQL Server. Значения типа datetime хранятся в двух четырехбайтовых целых числах. Тип smalldatetime хранит ту же информацию (дату и время), но с меньшей точностью, в двух двухбайтовых целых числах типа small.
Примечание.
Тип метки времени SQL Server — это тип двоичной строки с фиксированной длиной. Он не сопоставляется с типами времени JDBC: DATE, TIME или TIMESTAMP.
Сопоставление пользовательских типов
Сопоставление пользовательских типов JDBC, использующее интерфейсы SQLData для усовершенствованных типов JDBC (пользовательские, типы Struct и так далее). не реализовано в драйвере JDBC.