Informazioni sulle differenze tra i tipi di dati
Tra i tipi di dati del linguaggio di programmazione Java e i tipi di dati di SQL Server ci sono alcune differenze. Microsoft JDBC Driver per SQL Server consente di superare tali differenze tramite vari tipi di conversioni.
Tipi di caratteri
I tipi di dati della stringa di caratteri JDBC sono CHAR, VARCHAR e LONGVARCHAR. Il driver JDBC fornisce supporto per l'API di JDBC 4.0. In JDBC 4.0 i tipi di dati della stringa di caratteri JDBC possono essere anche NCHAR, NVARCHAR e LONGNVARCHAR. Questi nuovi tipi di stringhe di caratteri mantengono i tipi di caratteri nativi di Java in formato Unicode pertanto non richiedono più conversioni da ANSI a Unicode o viceversa.
Tipo | Descrizione |
---|---|
A lunghezza fissa | I tipi di dati char e nchar di SQL Server sono mappati direttamente ai tipi CHAR e NCHAR JDBC. Si tratta di tipi a lunghezza fissa con spaziatura messi a disposizione dal server nel caso in cui la colonna presenti SET ANSI_PADDING ON . Il riempimento è sempre attivato per il tipo nchar, mentre per il tipo char il riempimento viene aggiunto dal driver JDBC nel caso in cui le colonne char del server non siano riempite con caratteri nulli. |
A lunghezza variabile | I tipi varchar e nvarchar di SQL Server sono mappati direttamente ai tipi VARCHAR e NVARCHAR JDBC, rispettivamente. |
Lungo | I tipi text e ntext di SQL Server sono mappati direttamente ai tipi LONGVARCHAR e LONGNVARCHAR JDBC, rispettivamente. Poiché si tratta di tipi deprecati a partire da SQL Server 2005 (9.x), è consigliabile usare invece i tipi valore di grandi dimensioni, varchar(max) e nvarchar(max). Non è possibile usare i metodi update<Numeric Type> e updateObject (int, java.lang.Object) sulle colonne server text e ntext. L'uso del metodo setObject con un tipo di conversione dei caratteri specifico è invece supportato per le colonne del server di tipo text e ntext. |
Tipi di stringhe binarie
I tipi per stringa binaria JDBC sono BINARY, VARBINARY e LONGVARBINARY.
Tipo | Descrizione |
---|---|
A lunghezza fissa | Il tipo binary di SQL Server è mappato direttamente al tipo BINARY JDBC. Si tratta di un tipo a lunghezza fissa con spaziatura messo a disposizione dal server nel caso in cui la colonna presenti SET ANSI_PADDING ON. La spaziatura viene aggiunta dal driver JDBC se mancante nelle colonne char del server. Il tipo timestamp di SQL Server è un tipo BINARY JDBC con lunghezza fissa di 8 byte. |
A lunghezza variabile | Il tipo varbinary di SQL Server è mappato al tipo VARBINARY JDBC. Il tipo udt di SQL Server è mappato al tipo VARBINARY JDBC. |
Lungo | Il tipo image di SQL Server è mappato al tipo LONGVARBINARY JDBC. Poiché si tratta di un tipo deprecato a partire da SQL Server 2005 (9.x), è consigliabile usare invece un tipo valore di grandi dimensioni, varbinary(max). |
Tipi di valori numerici esatti
Ai tipi di valori numerici esatti di JDBC viene eseguito il mapping direttamente ai tipi corrispondenti di SQL Server.
Tipo | Descrizione |
---|---|
BIT | Il tipo BIT di JDBC rappresenta un singolo bit che può essere 0 o 1. È mappato al tipo bit di SQL Server. |
TINYINT | Il tipo TINYINT di JDBC rappresenta un singolo byte. È mappato al tipo tinyint di SQL Server. |
SMALLINT | Il tipo SMALLINT di JDBC rappresenta un valore intero a 16 bit con segno. È mappato al tipo smallint di SQL Server. |
INTEGER | Il tipo INTEGER di JDBC rappresenta un valore intero a 32 bit con segno. È mappato al tipo int di SQL Server. |
bigint | Il tipo BIGINT di JDBC rappresenta un valore intero a 64 bit con segno. È mappato al tipo bigint di SQL Server. |
NUMERIC | Il tipo NUMERIC di JDBC rappresenta un valore decimale a precisione fissa che può contenere valori di precisione identica. Il tipo NUMERIC è mappato al tipo numeric di SQL Server. |
DECIMAL | Il tipo DECIMAL di JDBC rappresenta un valore decimale a precisione fissa che può contenere valori pari almeno alla precisione specificata. Il tipo DECIMAL è mappato al tipo decimal di SQL Server. Il tipo DECIMAL JDBC è mappato anche ai tipi money e smallmoney di SQL Server, che sono tipi decimali a precisione fissa specifici archiviati rispettivamente in 8 e 4 byte. |
Tipi di valori numerici approssimati
I tipi numerici approssimati JDBC sono REAL, DOUBLE e FLOAT.
Tipo | Descrizione |
---|---|
REAL | Il tipo REAL JDBC ha sette cifre di precisione (precisione singola) ed è mappato direttamente al tipo real di SQL Server. |
DOUBLE | Il tipo DOUBLE JDBC ha 15 cifre di precisione (precisione doppia) ed è mappato al tipo float di SQL Server. Il tipo JDBC FLOAT è sinonimo di DOUBLE. Per non creare confusione tra FLOAT e DOUBLE, è preferibile usare il tipo DOUBLE. |
Tipi datetime
Il tipo TIMESTAMP JDBC è mappato ai tipi datetime e smalldatetime di SQL Server. Il tipo datetime viene memorizzato in due valori interi a 4 byte. Il tipo smalldatetime contiene le stesse informazioni (data e ora), ma, essendo memorizzato in due valori small integer a 2 byte, garantisce una precisione inferiore.
Nota
Il tipo timestamp di SQL Server è un tipo stringa binario a lunghezza fissa. Non viene mappato ai tipi JDBC relativi a data e ora: DATE, TIME, or TIMESTAMP.
Mapping personalizzato dei tipi
La caratteristica del mapping personalizzato dei tipi di JDBC, che usa le interfacce SQLData per i tipi avanzati di JDBC (UDT, Struct e così via), non è implementata nel driver JDBC.