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 2005. El controlador JDBC de Microsoft SQL Server 2005 ayuda a facilitar esas diferencias mediante varios tipos de conversiones.
Tipos de caracteres
Los tipos de datos de cadenas de caracteres de JDBC son CHAR, VARCHAR y LONGVARCHAR.
Tipo | Descripción |
---|---|
Longitud fija |
Los tipos de datos SQL Serverchar y nchar se asignan directamente al tipo CHAR de JDBC. Estos son tipos de longitud fija con relleno que proporciona el servidor en el caso de que la columna tenga habilitado SET ANSI_PADDING. El relleno siempre está habilitado para nchar, pero para char, si las columnas char del servidor no tienen relleno, éste lo agrega el controlador JDBC. |
Longitud variable |
Los tipos SQL Server varchar y nvarchar se asignan directamente al tipo VARCHAR de JDBC. |
Long |
Los tipos SQL Server text y ntext se asignan al tipo LONGVARCHAR JDBC. Estos son tipos obsoletos para SQL Server 2005, por lo que debería usar tipos de valores mayores en su lugar. No se pueden usar los métodos update<Numeric Type> y updateObject (int, java.lang.Object) con las columnas de servidor text y ntext. No obstante, 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 datos de cadenas binarias de JDBC son BINARY, VARBINARY y LONGVARBINARY.
Tipo | Descripción |
---|---|
Longitud fija |
El tipo SQL Serverbinary se asigna directamente al tipo de JDBC BINARY. 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 SQL Servertimestamp es un tipo de JDBC BINARY con la longitud fija de 8 bytes. |
Longitud variable |
El tipo SQL Server varbinary se asigna al tipo de JDBC VARBINARY. |
Long |
El tipo SQL Server image se asigna al tipo de JDBC LONGVARBINARY. Éste es un tipo que SQL Server 2005 no aprueba, por lo que debería usar un tipo de valor grande en su lugar. El tipo udt de SQL Server 2005 se asigna a JDBC como un tipo LONGBINARY. |
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 tinynt de SQL Server. |
SMALLINT |
El tipo SMALLINT de JDBC 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 de 32 bits con signo. 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 SQL Server decimal. 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 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 SQL Serverreal. |
DOUBLE |
El tipo DOUBLE de JDBC tiene 15 dígitos de precisión (precisión doble) y se asigna directamente al tipo float de SQL Server. El tipo de JDBC FLOAT es un sinónimo de DOUBLE. Dado que puede haber confusión entre FLOAT y DOUBLE, se prefiere DOUBLE. |
Tipos de fecha y hora
El tipo de JDBC TIMESTAMP se asigna a los tipos SQL Server datetime y smalldatetime. 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
En el controlador JDBC no está incluida 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.).