Descripción de las diferencias entre los tipos de datos
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.