Informazioni sulle differenze tra i tipi di dati

Scaricare il driver JDBC

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 padding è sempre applicato a nchar, ma per char, nel caso in cui le colonne char del server non siano riempite, il driver JDBC aggiunge il padding.
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 interna fornita dal server nel caso in cui la colonna abbia SET ANSI_PADDING ON. Quando le colonne char del server non sono riempite, il driver JDBC aggiunge il padding.

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

I tipi numerici esatti di JDBC corrispondono direttamente ai rispettivi tipi di SQL Server.

Tipo Descrizione
BIT Il tipo BIT di JDBC rappresenta un singolo bit che può essere 0 o 1. Corrisponde al tipo di SQL Server bit.
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.
Numerico 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 di data e ora

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.

Mappatura dei tipi personalizzata

La funzionalità di mappatura personalizzata dei tipi di JDBC che utilizza le interfacce SQLData per i tipi avanzati JDBC (UDT, Struct e così via). non è implementata nel driver JDBC.

Vedi anche

Informazioni sui tipi di dati del driver JDBC