Grundlegendes zu den Unterschieden von Datentypen

Es gibt eine Reihe von Unterschieden zwischen den Java-Datentypen und den SQL Server 2005-Datentypen. Microsoft SQL Server 2005 JDBC Driver berücksichtigt diese Unterschiede durch verschiedenartige Konvertierungen.

Zeichentypen

Die JDBC-Datentypen für Zeichenfolgen lauten CHAR, VARCHAR und LONGVARCHAR.

Typ Beschreibung

Feste Länge

Die SQL Server-Datentypen char und nchar entsprechen direkt dem JDBC-Typ CHAR. Diese Typen weisen eine feste Länge auf und werden vom Server mit Leerstellen aufgefüllt, wenn für die Spalte SET ANSI_PADDING ON eingestellt wurde. Die Auffüllung mit Leerstellen ist für nchar immer aktiviert. Bei char fügt der JDBC-Treiber die Leerstellen hinzu, wenn die char-Spalten des Servers nicht aufgefüllt wurden.

Variable Länge

Die SQL Server-Typen varchar und nvarchar entsprechen direkt dem JDBC-Typ VARCHAR.

Long

Die SQL Server-Typen text und ntext entsprechen dem JDBC-Typ LONGVARCHAR. Diese Typen sind in SQL Server 2005 veraltet, sodass Sie stattdessen die Typen mit umfangreichen Werten verwenden sollten.

Mit der update<Numeric Type>-Methode und der updateObject (int, java.lang.Object)-Methode treten bei text- und ntext-Serverspalten Fehler auf. Allerdings wird die Verwendung der setObject-Methode mit Angabe eines Zeichenkonvertierungstyps für text- und ntext-Serverspalten unterstützt.

Binäre Zeichenfolgetypen

Die binären JDBC-Zeichenfolgentypen lauten BINARY, VARBINARY und LONGVARBINARY.

Typ Beschreibung

Feste Länge

Der SQL Server-Typ binary entspricht direkt dem JDBC-Typ BINARY. Dieser Typ weist eine feste Länge auf und wird vom Server mit Leerstellen aufgefüllt, wenn für die Spalte SET ANSI_PADDING ON eingestellt wurde. Wenn die Zeichenspalten des Servers nicht mit Leerstellen aufgefüllt sind, fügt der JDBC-Treiber die Leerstellen hinzu.

Bei dem SQL Server-Typ timestamp handelt es sich um einen JDBC BINARY-Typ mit einer festen Länge von 8 Byte.

Variable Länge

Der SQL Server-Typ varbinary entspricht dem JDBC-Typ VARBINARY.

Long

Der SQL Server-Typ image entspricht dem JDBC-Typ LONGVARBINARY. Dieser Type ist in SQL Server 2005 veraltet, sodass Sie stattdessen einen Typ mit umfangreichen Werten verwenden sollten.

Der udt-Typ in SQL Server 2005 entspricht in JDBC dem LONGBINARY-Typ.

Exakte numerische Typen

Die exakten numerischen JDBC-Typen entsprechen direkt den entsprechenden SQL Server-Typen.

Typ Beschreibung

BIT

Der JDBC-Typ BIT stellt ein Bit dar, das 0 oder 1 sein kann. Entspricht dem SQL Server-Typ bit.

TINYINT

Der JDBC-Typ TINYINT stellt ein einzelnes Byte dar. Entspricht dem SQL Server-Typ tinyint.

SMALLINT

Der JDBC-Typ SMALLINT stellt eine 16-Bit-Ganzzahl mit Vorzeichen dar. Entspricht dem SQL Server-Typ smallint.

INTEGER

Der JDBC-Typ INTEGER stellt eine 32-Bit-Ganzzahl mit Vorzeichen dar. Entspricht dem SQL Server-Typ int.

BIGINT

Der JDBC-Typ BIGINT stellt eine 64-Bit-Ganzzahl mit Vorzeichen dar. Entspricht dem SQL Server-Typ bigint.

NUMERIC

Der JDBC-Typ NUMERIC stellt einen Dezimalwert fester Genauigkeit dar, der Werte mit identischer Genauigkeit enthält. Der NUMERIC-Typ entspricht dem SQL Server-Typ numeric.

DECIMAL

Der JDBC-Typ DECIMAL stellt einen Dezimalwert fester Genauigkeit dar, der Werte mit mindestens der angegebenen Genauigkeit enthält. Der DECIMAL-Typ ist dem SQL Server-Typ decimal zugeordnet.

Der JDBC-Typ DECIMAL entspricht außerdem den SQL Server-Typen money und smallmoney. Dabei handelt es sich um spezielle Dezimaltypen fester Genauigkeit, die in 8 bzw. 4 Bytes gespeichert werden.

Angenäherte numerische Typen

Die angenäherten numerischen JDBC-Typen lauten REAL, DOUBLE und FLOAT.

Typ Beschreibung

REAL

Der JDBC-Typ REAL weist sieben Ziffern für die Genauigkeit auf (einfache Genauigkeit) und entspricht dem SQL Server-Typ real.

DOUBLE

Der JDBC-Typ DOUBLE weist 15 Ziffern für die Genauigkeit auf (doppelte Genauigkeit) und entspricht dem SQL Server-Typ float. Bei dem JDBC-Typ FLOAT handelt es sich um ein Synonym für DOUBLE. Um Verwechslungen zwischen FLOAT und DOUBLE zu vermeiden, sollte vorzugsweise DOUBLE verwendet werden.

Datum-/Zeittypen

Der JDBC-Typ TIMESTAMP entspricht den SQL Server-Typen datetime und smalldatetime. Der datetime-Typ wird in zwei integer-Werten mit einer Länge von 4 Byte gespeichert. Der smalldatetime-Typ enthält die gleichen Informationen (Datum und Uhrzeit), allerdings mit geringerer Genauigkeit in zwei integer-Werten mit einer Länge von 2 Byte.

Hinweis

Bei dem SQL Server-Typ timestamp handelt es sich um einen binären Zeichenfolgetyp mit fester Länge. Er entspricht keinem der JDBC-Typen DATE, TIME oder TIMESTAMP.

Benutzerdefinierte Typzuordnung

Das Zuordnungsfeature für benutzerdefinierte Typen von JDBC, das die SQLData-Schnittstellen für die erweiterten JDBC-Typen (UDTs, Struct usw.) verwendet, ist im JDBC-Treiber nicht implementiert.

Siehe auch

Andere Ressourcen

Grundlegendes zu den Datentypen in JDBC Driver