Condividi tramite


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 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.

Vedi anche

Informazioni sui tipi di dati del driver JDBC