Présentation des différences entre les types de données
Il existe de nombreuses différences entre les types de données du langage de programmation Java et SQL Server. Le Pilote Microsoft JDBC pour SQL Server vous aide à maîtriser les différences entre ces différents types de conversions.
Types de caractères
Les types de données de chaîne de caractères JDBC sont CHAR, VARCHAR et LONGVARCHAR. Le pilote JDBC prend en charge l'API JDBC 4.0. Dans JDBC 4.0, les types de données de chaîne de caractères JDBC peuvent également être NCHAR, NVARCHAR et LONGNVARCHAR. Ces nouveaux types de chaînes de caractères conservent les types de caractères natifs Java au format Unicode et rendent inutiles les conversions ANSI vers Unicode ou Unicode vers ANSI.
Type | Description |
---|---|
Longueur fixe | Les types de données SQL Server char et nchar correspondent directement aux types JDBC CHAR et NCHAR. Il s’agit de types de longueur fixe avec un remplissage fourni par le serveur au cas où la colonne a SET ANSI_PADDING ON . Le remplissage est toujours activé pour nchar ; toutefois, pour char, si les colonnes char du serveur ne sont pas remplies, le pilote JDBC ajoute le remplissage. |
Longueur variable | Les types SQL Server varchar et nvarchar correspondent directement et respectivement aux types JDBC VARCHAR et NVARCHAR. |
Long | Les types SQL Server text et ntext correspondent respectivement aux types JDBC LONGVARCHAR et LONGNVARCHAR. Ces types sont déconseillés à partir de SQL Server 2005 (9.x) ; utilisez à la place des types de grande valeur, varchar(max) ou nvarchar(max) . Les méthodes update<Type numérique> et updateObject (int, java.lang.Object) échoueront sur des colonnes serveur text et ntext. Cependant, l’utilisation de la méthode setObject avec un type de conversion de caractère spécifié est prise en charge sur les colonnes de serveur text et ntext. |
Types de chaînes binaires
Les types de chaînes binaires JDBC sont BINARY, VARBINARY et LONGVARBINARY.
Type | Description |
---|---|
Longueur fixe | Le type SQL Server binary correspond directement au type JDBC BINARY. Il s'agit d'un type de longueur fixe avec une marge fournie par le serveur au cas où la colonne a SET ANSI_PADDING ON. Si les colonnes char du serveur ne disposent pas de marge, le pilote JDBC ajoute la marge. Le type SQL Server timestamp est un type JDBC BINARY de longueur fixe de 8 octets. |
Longueur variable | Le type SQL Server varbinary correspond au type JDBC VARBINARY. Le type SQL Server udt correspond au type JDBC VARBINARY. |
Long | Le type SQL Server image correspond au type JDBC LONGVARBINARY. Ce type est déprécié à partir de SQL Server 2005 (9.x) ; par conséquent, vous devez utiliser un type de grande valeur, varbinary(max) , à la place. |
Types numériques exacts
Les types numériques exacts JDBC sont mappés directement aux types SQL Server correspondants.
Type | Description |
---|---|
BIT | Le type JDBC BIT représente un bit unique qui peut être 0 ou 1. Il correspond au type SQL Server bit. |
TINYINT | Le type JDBC TINYINT représente un octet unique. Il correspond au type SQL Server tinyint. |
SMALLINT | Le type JDBC SMALLINT représente un entier signé de 16 bits. Il correspond au type SQL Server smallint. |
INTEGER | Le type JDBC INTEGER représente un entier signé de 32 bits. Il correspond au type SQL Server int. |
bigint | Le type JDBC BIGINT représente un entier signé de 64 bits. Il correspond au type SQL Server bigint. |
NUMERIC | Le type JDBC NUMERIC représente une valeur décimale à précision fixe qui conserve des valeurs de précision identique. Le type NUMERIC correspond au type SQL Server numeric. |
DECIMAL | Le type JDBC DECIMAL représente une valeur décimale à précision fixe qui conserve au minimum des valeurs de la précision spécifiée. Le type DECIMAL correspond au type SQL Server decimal. Le type JDBC DECIMAL correspond également aux types SQL Server money et smallmoney, qui sont des types décimaux à précision fixe spécifiques stockés respectivement sur 8 et 4 octets. |
Types numériques approximatifs
Les types numériques approximatifs JDBC sont REAL, DOUBLE et FLOAT.
Type | Description |
---|---|
real | Le type JDBC REAL, d’une précision à 7 chiffres (simple précision), correspond directement au type SQL Server real. |
DOUBLE | Le type JDBC DOUBLE, d’une précision à 15 chiffres (double précision), correspond au type SQL Server float. Le type JDBC FLOAT est un synonyme de DOUBLE. Compte tenu de la confusion possible entre FLOAT et DOUBLE, DOUBLE est préférable. |
Types de date/d'heure
Le type JDBC TIMESTAMP correspond aux types SQL Server datetime et smalldatetime. Le type datetime est stocké dans deux entiers de 4 octets. Le type smalldatetime conserve les mêmes informations (date et heure), mais avec une précision inférieure, dans deux petits entiers de 2 octets.
Notes
Le type SQL Server timestamp est un type de chaîne binaire de longueur fixe. Il ne correspond à aucun type de temps JDBC : DATE, TIME et TIMESTAMP.
Mappage de types personnalisés
La fonction de mappage de type personnalisé de JDBC qui utilise les interfaces SQLData pour les types avancés JDBC (UDT, Struct, et ainsi de suite). n'est pas implémentée dans le pilote JDBC.