Descripción de las diferencias entre los tipos de datos

Descargar controlador JDBC

Hay varias diferencias entre los tipos de datos del lenguaje de programación Java y los tipos de datos de SQL Server. El Microsoft JDBC Driver para SQL Server ayuda a facilitar esas diferencias mediante diversos tipos de conversiones.

Tipos de caracteres

Los tipos de datos de cadena de caracteres de JDBC son CHAR, VARCHAR y LONGVARCHAR. El controlador JDBC ofrece compatibilidad con la API de JDBC 4.0. En JDBC 4.0, los tipos de datos de cadena de caracteres de JDBC también pueden ser NCHAR, NVARCHAR y LONGNVARCHAR. Estos nuevos tipos de cadena de caracteres mantienen los tipos de caracteres nativos de Java en formato Unicode y quitan la necesidad de realizar cualquier conversión ANSI a Unicode o Unicode a ANSI.

Tipo Descripción
Longitud fija Los tipos de datos char y nchar de SQL Server se asignan directamente a los tipos CHAR y NCHAR de JDBC. Estos son tipos de longitud fija con relleno que proporciona el servidor en caso de que la columna tenga SET ANSI_PADDING ON. El relleno siempre está habilitado para nchar, pero en el caso de char, si las columnas char del servidor no tienen relleno, el servidor lo agrega el controlador JDBC.
Longitud variable Los tipos varchar y nvarchar de SQL Server se asignan directamente a los tipos de JDBC VARCHAR y NVARCHAR, respectivamente.
long Los tipos text y ntext de SQL Server se asignan a los tipos de JDBC LONGVARCHAR y LONGNVARCHAR, respectivamente. Estos son tipos que ya no se utilizan desde SQL Server 2005 (9.x), por lo que en su lugar debería usar tipos de valores mayores, varchar(max) o nvarchar(max) .

Los métodos update<Numeric Type> y updateObject (int, java.lang.Object) generan un error con las columnas de servidor text y ntext. Pero se admite el uso del método setObject con un tipo específico de conversión de caracteres en columnas text y ntext del servidor.

Tipos de cadenas binarias

Los tipos de cadenas binarias de JDBC son BINARY, VARBINARY y LONGVARBINARY.

Tipo Descripción
Longitud fija El tipo binary de SQL Server se asigna directamente al tipo BINARY de JDBC. Es un tipo de longitud fija con relleno que proporciona el servidor en el caso de que la columna tenga habilitado SET ANSI_PADDING. Cuando las columnas char del servidor no tienen relleno, éste lo agrega el controlador JDBC.

El tipo timestamp de SQL Server es un tipo BINARY de JDBC con la longitud fija de 8 bytes.
Longitud variable El tipo varbinary de SQL Server se asigna al tipo VARBINARY de JDBC.

El tipo udt de SQL Server se asigna a JDBC como un tipo VARBINARY.
long El tipo image de SQL Server se asigna al tipo LONGVARBINARY de JDBC. Este tipo se ha dejado de utilizar desde SQL Server 2005 (9.x), por lo que en su lugar debería usar un tipo de valor grande, varbinary(max) .

Tipos numéricos exactos

Los tipos numéricos exactos de JDBC se asignan directamente a los tipos de SQL Server correspondientes.

Tipo Descripción
BIT El tipo de JDBC BIT representa un bit único que puede ser 0 ó 1. Esto se asigna a un tipo bit de SQL Server.
TINYINT El tipo de JDBC TINYINT representa un byte único. Esto se asigna a un tipo tinyint de SQL Server.
SMALLINT El tipo de JDBC SMALLINT representa un entero con signo de 16 bits. Esto se asigna a un tipo smallint de SQL Server.
INTEGER El tipo de JDBC INTEGER representa un entero con signo de 32 bits. Esto se asigna a un tipo int de SQL Server.
bigint El tipo de JDBC BIGINT representa un entero con signo de 64 bits. Esto se asigna a un tipo bigint de SQL Server.
NUMERIC El tipo NUMERIC de JDBC representa un valor decimal de precisión fija que contiene valores de precisión idéntica. El tipo NUMERIC se asigna al tipo numeric de SQL Server.
DECIMAL El tipo DECIMAL de JDBC representa un valor decimal de precisión fija que contiene valores de, al menos, la precisión especificada. El tipo DECIMAL se asigna al tipo decimal de SQL Server.

El tipo DECIMAL de JDBC también se asigna a los tipos money y smallmoney de SQL Server, que son tipos decimales de precisión fija específicos almacenados en 8 y 4 bytes, respectivamente.

Tipos numéricos aproximados

Los tipos numéricos aproximados de JDBC son REAL, DOUBLE y FLOAT.

Tipo Descripción
real El tipo de JDBC REAL tiene siete dígitos de precisión (precisión simple) y se asigna directamente al tipo real de SQL Server.
DOUBLE El tipo DOUBLE de JDBC tiene 15 dígitos de precisión (precisión doble) y se asigna al tipo float de SQL Server. El tipoFLOAT de JDBC es un sinónimo de DOUBLE. Dado que puede haber confusión entre FLOAT y DOUBLE, se prefiere DOUBLE.

Tipos Datetime

El tipo de JDBC TIMESTAMP se asigna a los tipos datetime y smalldatetime de SQL Server. El tipo datetime se almacena en dos enteros de 4 bytes. El tipo smalldatetime contiene la misma información (fecha y hora), pero con menos precisión, en dos enteros pequeños de 2 bytes.

Nota

El tipo timestamp de SQL Server es un tipo de cadena binaria de longitud fija. No se asigna a ninguno de los tipos de tiempo de JDBC: DATE, TIME o TIMESTAMP.

Asignación de tipos personalizados

La característica de asignación de tipos personalizados de JDBC que emplean las interfaces SQLData para los tipos avanzados de JDBC (UDT, Struct, etc.). no se incluye en el controlador JDBC.

Consulte también

Descripción de los tipos de datos del controlador JDBC