Condividi tramite


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 sono riscontrabili numerose differenze. Il driver JDBC per Microsoft SQL Server consente di superare tali differenze tramite vari tipi di conversioni.

Tipi di caratteri

I dati di tipo stringa di caratteri di JDBC sono i tipi CHAR, VARCHAR e LONGVARCHAR. A partire dalla versione 2.0 del driver JDBC per Microsoft SQL Server, viene fornito il supporto per l'API di JDBC 4.0. In JDBC 4.0 i dati di tipo stringa di caratteri JDBC possono essere anche di tipo 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 di 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, nel caso in cui le colonne char del server non siano riempite con caratteri nulli, tramite il driver JDBC viene aggiunto il riempimento.

A lunghezza variabile

I tipi di dati varchar e nvarchar di SQL Server sono mappati direttamente ai tipi VARCHAR e NVARCHAR di JDBC.

Long

I tipi text e ntext di SQL Server vengono mappati ai tipi LONGVARCHAR e LONGNVARCHAR di JDBC. Poiché si tratta di tipi obsoleti per SQL Server 2005 e SQL Server 2008, è necessario utilizzare i tipi per valori di grandi dimensioni varchar(max) o nvarchar(max).

I metodi update<Numeric Type> e updateObject (int, java.lang.Object) non possono essere utilizzati sulle colonne del server text e ntext. L'utilizzo del metodo setObject con un tipo di conversione dei caratteri specificato è invece supportato sulle colonne del server text e ntext.

Tipi di stringhe binarie

I tipi di stringa binaria di JDBC sono BINARY, VARBINARY e LONGVARBINARY.

Tipo Descrizione

A lunghezza fissa

Il tipo binary di SQL Server è mappato direttamente al tipo BINARY di 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 di JDBC con lunghezza fissa di 8 byte.

A lunghezza variabile

Il tipo varbinary di SQL Server è mappato al tipo VARBINARY di JDBC.

Il tipo udt di SQL Server è mappato a JDBC come tipo VARBINARY.

Long

Il tipo image di SQL Server è mappato al tipo LONGVARBINARY di JDBC. Poiché si tratta di un tipo obsoleto per SQL Server 2005 e SQL Server 2008, è necessario utilizzare un tipo per valori di grandi dimensioni varbinary(max).

Tipi di valori numerici esatti

I tipi di valori numerici esatti di JDBC sono mappati 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 ed è mappato al tipo bit di SQL Server.

TINYINT

Il tipo TINYINT di JDBC rappresenta un singolo bit ed è mappato al tipo tinyint di SQL Server.

SMALLINT

Il tipo SMALLINT di JDBC rappresenta un valore intero a 16 bit con segno ed è mappato al tipo smallint di SQL Server.

INTEGER

Il tipo INTEGER di JDBC rappresenta un valore intero a 32 bit con segno ed è mappato al tipo int di SQL Server.

BIGINT

Il tipo BIGINT di JDBC rappresenta un valore intero a 64 bit con segno ed è mappato al tipo bigint di SQL Server.

NUMERIC

Il tipo NUMERIC di JDBC rappresenta un valore decimale a precisione fissa che include 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 include valori pari almeno alla precisione specificata. Il tipo DECIMAL è mappato al tipo decimal di SQL Server.

Il tipo DECIMAL di JDBC è inoltre mappato ai tipi money e smallmoney di SQL Server, i quali sono specifici tipi decimali a precisione fissa archiviati, rispettivamente, in 8 e 4 byte.

Tipi di valori numerici approssimati

I tipi numerici approssimati di JDBC sono REAL, DOUBLE e FLOAT.

Tipo Descrizione

REAL

Il tipo REAL di JDBC presenta sette cifre di precisione (precisione singola) ed è mappato direttamente al tipo real di SQL Server.

DOUBLE

Il tipo DOUBLE di JDBC presenta 15 cifre di precisione (precisione doppia) ed è mappato al tipo float di SQL Server. Il tipo FLOAT di JDBC è un sinonimo di DOUBLE. Per non creare confusione tra FLOAT e DOUBLE, è preferibile utilizzare il tipo DOUBLE.

Tipi datetime

Il tipo TIMESTAMP di JDBC è mappato ai tipi datetime e smalldatetime di SQL Server. Il tipo datetime è archiviato in due valori interi a 4 byte. Il tipo smalldatetime include le stesse informazioni (data e ora), ma garantisce minore precisione ed è archiviato in due valori interi piccoli a 2 byte.

Nota

Il tipo timestamp di SQL Server è un tipo di stringa binaria a lunghezza fissa. Non è mappato ad alcun tipo di dati relativi alla data e all'ora di JDBC: DATE, TIME o TIMESTAMP.

Mapping personalizzato dei tipi

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

Vedere anche

Altre risorse

Informazioni sui tipi di dati del driver JDBC