Db2 11.1

Datentypen, die Datenbankdatentypen in Java-Anwendungen zugeordnet werden

Um effiziente JDBC-und SQLJ-Programme zu schreiben, müssen Sie die besten Zuordnungen zwischen Java™-Datentypen und Datentypen der Tabellenspalte verwenden.

In den folgenden Tabellen sind die Zuordnungen von Java-Datentypen zu JDBC-und Datenbankdatentypen für ein Db2 auf Linux-, UNIX-und Windows-Systemen -, Db2 for z/OS-oder IBM® Informix -System zusammengefasst.

Datentypen für die Aktualisierung von Tabellenspalten

In der folgenden Tabelle sind die Zuordnungen von Java-Datentypen zu Datenbankdatentypen für die Methoden PreparedStatement.setXXX oder ResultSet.updateXXX in JDBC-Programmen und für Eingabehostausdrücke in SQLJ-Programmen zusammengefasst. Wenn mehr als ein Java-Datentyp aufgelistet wird, ist der erste Datentyp der empfohlene Datentyp.

Tabelle 1. Zuordnungen von Java-Datentypen zu Datenbankserverdatentypen zum Aktualisieren von Datenbanktabellen
Java-Datentyp Datenbankdatentyp
short, java.lang.Short SMALLINT
boolean 1 , Byte 1 , java.lang.Boolean, java.lang.Byte SMALLINT
int, java.lang.Integer INTEGER
long, java.lang.Long BIGINT 12
java.math.BigInteger BIGINT 11
java.math.BigInteger CHAR (n) 11, 5
float, java.lang.Float REAL
double, java.lang.Double DOUBLE
java.math.BigDecimal DECIMAL (p, s) 2
java.math.BigDecimal DECFLOAT (n) 3, 4
java.lang.String CHAR (n) 5
java.lang.String GRAPHIC (m) 6
java.lang.String VARCHAR (n) 7
java.lang.String VARGRAPHIC (m) 8
java.lang.String CLOB 9
java.lang.String XML 10
byte [] CHAR (n) FOR BIT DATA 5
byte [] VARCHAR (n) FOR BIT DATA 7
byte [] BINARY (n) 5, 13
byte [] VARBINARY (n) 7, 13
byte [] BLOB 9
byte [] ROWID
byte [] XML 10
java.sql.Blob BLOB
java.sql.Blob XML 10
java.sql.Clob CLOB
java.sql.Clob DBCLOB 9
java.sql.Clob XML 10
java.sql.Date DATUM
java.sql.Time ZEIT
java.sql.Timestamp TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 14, 15
java.io.ByteArrayInputStream BLOB
java.io.StringReader CLOB
java.io.ByteArrayInputStream CLOB
java.io.InputStream XML 10
com.ibm.db2.jcc.DB2RowID (nicht weiter unterstützt) ROWID
java.sql.RowId ROWID
com.ibm.db2.jcc.DB2Xml (nicht weiter unterstützt) XML 10
java.sql.SQLXML XML 10
java.util.Date CHAR (n) 11, 5
java.util.Date VARCHAR (n) 11, 5
java.util.Date DATUM 11
java.util.Date Zeit 11
java.util.Date TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 11, 14, 15
java.util.Calendar CHAR (n) 11, 5
java.util.Calendar VARCHAR (n) 11, 5
java.util.Calendar DATUM 11
java.util.Calendar Zeit 11
java.util.Calendar TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 11, 14, 15
Hinweise:
  1. Bei Spaltenaktualisierungen hat der Datenserver keine exakte Entsprechung für die Java booleschen Datentypen oder Bytedatentypen, aber die beste Anpassung ist SMALLINT.
  2. p ist die Dezimalgenauigkeit und s der Maßstab der Tabellenspalte.

    Sie sollten Finanzanwendungen entwerfen, so dass java.math.BigDecimal-Spalten den DECIMAL-Spalten zugeordnet werden. Wenn Sie die Genauigkeit und den Maßstab einer DECIMAL-Spalte kennen, führt das Aktualisieren von Daten in der DECIMAL-Spalte mit Daten in einer java.math.BigDecimal-Variablen zu einer besseren Leistung als die Verwendung anderer Kombinationen von Datentypen.

  3. n = 16 oder n = 34.
  4. DECFLOAT ist für Verbindungen zu Db2 Version 9.1 für z/OS, Db2 Version 9.5 für Linux, UNIX und Windows oder Db2 für IBM i V6R1 oder höher für Datenbankserver gültig. Die Verwendung von DECFLOAT erfordert das SDK für Java Version 5 (1.5) oder höher.
  5. n < = 254 .
  6. m < =127.
  7. n < = 32672 .
  8. m < = 16336 .
  9. Diese Zuordnung ist nur gültig, wenn der Datenbankserver den Datentyp der Spalte ermitteln kann.
  10. XML ist für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2-Server der Version 9.1 für Linux, UNIX und Windows oder höher gültig.
  11. Diese Zuordnung ist nur für IBM Data Server Driver for JDBC and SQLJ Version 4.13 oder höher gültig.
  12. BIGINT ist für Verbindungen zu Db2 Version 9.1 für Datenbankserver von z/OS oder höher, Db2 Version 9.1 für Linux, UNIX und Windows oder höher-Datenbankservern und allen unterstützten Db2 für IBM i -Datenbankservern gültig.
  13. BINARY und VARBINARY sind gültig für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2 für IBM i 5/OS V5R3-und spätere Datenbankserver.
  14. p gibt die Genauigkeit der Zeitmarke an. Dies ist die Anzahl der Ziffern im Bruchteil der Zeitmarke. 0 < = p < =12. Der Standardwert ist 6. TIMESTAMP (p) wird für Verbindungen mit Db2 auf Linux-, UNIX-und Windows-Systemen V9.7 und höher und Db2 for z/OS V10 und später unterstützt.
  15. Die Klausel WITH TIME ZONE wird nur für Verbindungen mit Db2 for z/OS V10 und später unterstützt.

Datentypen für das Abrufen aus Tabellenspalten

Die folgende Tabelle enthält eine Zusammenfassung der Zuordnungen von Db2-oder IBM Informix -Datentypen zu Java-Datentypen für ResultSet.getXXX -Methoden in JDBC-Programmen und für Iteratoren in SQLJ-Programmen. In dieser Tabelle werden keine numerischen Java-Wrapperobjekttypen aufgelistet, die mit ResultSet.getObject abgerufen werden.

Tabelle 2. Zuordnungen von Datenbankserverdatentypen zu Java-Datentypen zum Abrufen von Daten aus Datenbankservertabellen
SQL-Datentyp Empfohlener Java-Datentyp oder Java-Objekttyp Andere unterstützte Java-Datentypen
SMALLINT kurz byte, int, long, float, double, java.math.BigDecimal, boolean, java.lang.String
INTEGER int short, byte, long, float, double, java.math.BigDecimal, boolean, java.lang.String
BIGINT 5 long int, short, byte, float, double, java.math.BigDecimal, boolean, java.lang.String
DECIMAL (p, s) oder NUMERIC (p, s) java.math.BigDecimal long, int, short, byte, float, double, boolean, java.lang.String
DECFLOAT (n) 1, 2 java.math.BigDecimal long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.lang.String
REAL float long, int, short, byte, double, java.math.BigDecimal, boolean, java.lang.String
DOUBLE doppelt long, int, short, byte, float, java.math.BigDecimal, boolean, java.lang.String
CHAR (n) java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader
VARCHAR (n) java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader
CHAR (n) FOR BIT DATA byte [] java.lang.String, java.io.InputStream, java.io.Reader
VARCHAR (n) FOR BIT DATA byte [] java.lang.String, java.io.InputStream, java.io.Reader
BINARY (n) 6 byte [] Keine
VARBINARY (n) 6 byte [] Keine
GRAPHIC (m) java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader
VARGRAPHIC (m) java.lang.String long, int, short, byte, float, double, java.math.BigDecimal, boolean, java.sql.Date, java.sql.Time, java.sql.Timestamp, java.io.InputStream, java.io.Reader
CLOB (n) java.sql.Clob java.lang.String
BLOB (n) java.sql.Blob byte [] 3
DBCLOB (m) Keine exakte Entsprechung. Verwenden Sie java.sql.Clob.  
ROWID java.sql.RowId byte [], com.ibm.db2.jcc.DB2RowID (nicht weiter unterstützt)
XML 4 java.sql.SQLXML byte [], java.lang.String, java.io.InputStream, java.io.Reader
DATUM java.sql.Date java.sql.String, java.sql.Timestamp
ZEIT java.sql.Time java.sql.String, java.sql.Timestamp
TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 7, 8 java.sql.Timestamp java.sql.String, java.sql.Date, java.sql.Time, java.sql.Timestamp
Hinweise:
  1. n = 16 oder n = 34.
  2. DECFLOAT ist für Verbindungen zu Db2 Version 9.1 für z/OS, Db2 Version 9.5 für Linux, UNIX und Windows oder Db2 für IBM i V6R1 oder höher für Datenbankserver gültig. Die Verwendung von DECFLOAT erfordert das SDK für Java Version 5 (1.5) oder höher.
  3. Diese Zuordnung ist nur gültig, wenn der Datenbankserver den Datentyp der Spalte ermitteln kann.
  4. XML ist für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2-Server der Version 9.1 für Linux, UNIX und Windows oder höher gültig.
  5. BIGINT ist für Verbindungen zu Version 9.1 oder höher der Db2 for z/OS- und Db2 for für Linux, UNIX und Windows -Datenbankserver sowie für Verbindungen zu allen unterstützten Db2 für IBM i -Datenbankservern gültig.
  6. BINARY und VARBINARY sind gültig für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2 für IBM i 5/OS V5R3-und spätere Datenbankserver.
  7. p gibt die Genauigkeit der Zeitmarke an. Dies ist die Anzahl der Ziffern im Bruchteil der Zeitmarke. 0 < = p < =12. Der Standardwert ist 6. TIMESTAMP (p) wird für Verbindungen mit Db2 auf Linux-, UNIX-und Windows-Systemen V9.7 und höher und Db2 for z/OS V10 und später unterstützt.
  8. Die Klausel WITH TIME ZONE wird nur für Verbindungen mit Db2 for z/OS V10 und später unterstützt.

Datentypen zum Aufrufen gespeicherter Prozeduren und benutzerdefinierter Funktionen

Die folgende Tabelle enthält eine Zusammenfassung der Zuordnungen von Java-Datentypen zu JDBC-Datentypen und Db2-oder IBM Informix -Datentypen zum Aufrufen benutzerdefinierter Funktionen und Parameter für gespeicherte Prozeduren. Die Zuordnungen von Java-Datentypen zu JDBC-Datentypen werden für CallableStatement.registerOutParameter -Methoden in JDBC-Programmen verwendet. Die Zuordnungen von Java-Datentypen zu Datenbankserverdatentypen sind für Parameter in gespeicherten Prozeduren oder für benutzerdefinierte Funktionsaufrufe bestimmt.

Wenn mehr als ein Java-Datentyp in der folgenden Tabelle aufgelistet ist, ist der erste Datentyp der empfohlene Datentyp.

Tabelle 3. Zuordnungen von Java-, JDBC-und SQL-Datentypen zum Aufrufen gespeicherter Prozeduren und benutzerdefinierter Funktionen
Java-Datentyp JDBC-Datentyp SQL-Datentyp
boolean 3 , java.lang.Boolean BOOLEAN BOOLEAN 1, 2
boolean 3 , java.lang.Boolean BIT SMALLINT
Byte 3 , java.lang.Byte TINYINT SMALLINT
short, java.lang.Short SMALLINT SMALLINT
int, java.lang.Integer INTEGER INTEGER
long, java.lang.Long BIGINT BIGINT 7
float, java.lang.Float REAL REAL
float, java.lang.Float FLOAT REAL
double, java.lang.Double DOUBLE DOUBLE
java.math.BigDecimal NUMERISCH DEZIMAL
java.math.BigDecimal DEZIMAL DEZIMAL
java.math.BigDecimal java.types.OTHER DECFLOAT n 4
java.math.BigDecimal com.ibm.db2.jcc.DB2Types.DECFLOAT DECFLOAT n 4
java.lang.String ZCHN ZCHN
java.lang.String ZCHN GRAPHIC
java.lang.String VARCHAR VARCHAR
java.lang.String VARCHAR VARGRAPHIC
java.lang.String LONGVARCHAR VARCHAR
java.lang.String VARCHAR CLOB
java.lang.String LONGVARCHAR CLOB
java.lang.String CLOB CLOB
byte [] BINARY CHAR FOR BIT DATA
byte [] VARBINARY VARCHAR FOR BIT DATA
byte [] BINARY BINARY 6
byte [] VARBINARY VARBINARY 6
byte [] LONGVARBINARY VARCHAR FOR BIT DATA
byte [] VARBINARY BLOB 5
byte [] LONGVARBINARY BLOB 5
java.sql.Date DATUM DATUM
java.sql.Time ZEIT ZEIT
java.sql.Timestamp TIMESTAMP TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 8, 9
java.sql.Blob BLOB BLOB
java.sql.Clob CLOB CLOB
java.sql.Clob CLOB DBCLOB
java.io.ByteArrayInputStream Keine BLOB
java.io.StringReader Keine CLOB
java.io.ByteArrayInputStream Keine CLOB
com.ibm.db2.jcc.DB2RowID (nicht weiter unterstützt) com.ibm.db2.jcc.DB2Types.ROWID ROWID
java.sql.RowId java.sql.Types.ROWID ROWID
com.ibm.db2.jcc.DB2Xml (nicht weiter unterstützt) com.ibm.db2.jcc.DB2Types.XML XML-AS-CLOB
java.sql.SQLXML java.sql.Types.SQLXML XML
java.sql.SQLXML java.sql.Types.SQLXML XML-AS-CLOB
java.sql.Array java.sql.Types.ARRAY ARRAY 2
java.sql.Struct java.sql.Types.STRUCT ROW 1, 2
java.sql.ResultSet com.ibm.db2.jcc.DB2Types.CURSOR CURSOR-Typ 2
Hinweise:
  1. Dieser Parameterdatentyp wird nur für IBM Data Server Driver for JDBC and SQLJ type 4 connectivity in Db2 auf Linux-, UNIX-und Windows-Systemen unterstützt.
  2. Dieser Parameterdatentyp wird nur für Aufrufe gespeicherter Prozeduren unterstützt.
  3. Eine gespeicherte Prozedur oder benutzerdefinierte Funktion, die mit einem Parameter SMALLINT definiert ist, kann mit einem booleschen Parameter oder einem Byteparameter aufgerufen werden. Dies wird jedoch nicht empfohlen.
  4. Die Parameter DECFLOAT in Java-Routinen gelten nur für Verbindungen zu Db2 Version 9.1 für Datenbankserver von z/OS oder höher. DECFLOAT-Parameter in Java-Routinen werden für Verbindungen zu für Linux, UNIX und Windows oder Db2 für IBM i nicht unterstützt. Die Verwendung von DECFLOAT erfordert das SDK für Java Version 5 (1.5) oder höher.
  5. Diese Zuordnung ist nur gültig, wenn der Datenbankserver den Datentyp der Spalte ermitteln kann.
  6. BINARY und VARBINARY sind gültig für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2 für IBM i 5/OS V5R3-und spätere Datenbankserver.
  7. BIGINT ist für Verbindungen zu Version 9.1 oder höher der Db2 for z/OS- und Db2 for für Linux, UNIX und Windows -Datenbankserver sowie für Verbindungen zu allen unterstützten Datenbankservern gültig.
  8. p gibt die Genauigkeit der Zeitmarke an. Dies ist die Anzahl der Ziffern im Bruchteil der Zeitmarke. 0 < = p < =12. Der Standardwert ist 6. TIMESTAMP (p) wird für Verbindungen mit Db2 auf Linux-, UNIX-und Windows-Systemen V9.7 und höher und Db2 for z/OS V10 und später unterstützt.
  9. Die Klausel WITH TIME ZONE wird nur für Verbindungen mit Db2 for z/OS V10 und später unterstützt.

Datentypen in gespeicherten Prozeduren von Java und benutzerdefinierte Funktionen

In der folgenden Tabelle sind die Zuordnungen der SQL-Parameterdatentypen in einer Anweisung CREATE PROCEDURE oder CREATE FUNCTION für die Datentypen in der entsprechenden gespeicherten Java-Prozedur oder in der benutzerdefinierten Funktion zusammengefasst.

Wenn für Db2 auf Linux-, UNIX-und Windows-Systemen mehr als ein Java-Datentyp für einen SQL-Datentyp aufgelistet wird, ist nur der Datentyp first Java gültig.

Wenn für Db2 for z/OS mehr als ein Java-Datentyp aufgelistet wird und Sie einen anderen Datentyp als den ersten Datentyp als Methodenparameter verwenden, müssen Sie eine Methodensignatur in die Klausel EXTERNAL Ihrer Anweisung CREATE PROCEDURE oder CREATE FUNCTION einfügen, die die Java-Datentypen der Methodenparameter angibt.

Tabelle 4. Zuordnungen von SQL-Datentypen in einer Anweisung CREATE PROCEDURE oder CREATE FUNCTION für Datentypen in der entsprechenden gespeicherten Java-Prozedur oder benutzerdefiniertes Funktionsprogramm
SQL-Datentyp in CREATE PROCEDURE oder CREATE FUNCTION Datentyp in Java gespeicherter Prozedur oder benutzerdefinierter Funktionsmethode 2
SMALLINT short, java.lang.Integer
BOOLEAN 1 boolesch
INTEGER int, java.lang.Integer
BIGINT 3 long, java.lang.Long
REAL float, java.lang.Float
DOUBLE double, java.lang.Double
DEZIMAL java.math.BigDecimal
DECFLOAT 4 java.math.BigDecimal
ZCHN java.lang.String
VARCHAR java.lang.String
CHAR FOR BIT DATA byte []
VARCHAR FOR BIT DATA byte []
BINARY 5 byte []
VARBINARY 5 byte []
DATUM java.sql.Date
ZEIT java.sql.Time
TIMESTAMP, TIMESTAMP (p), TIMESTAMP WITH TIME ZONE, TIMESTAMP (p) WITH TIME ZONE 6, 7 java.sql.Timestamp
BLOB java.sql.Blob
CLOB java.sql.Clob
DBCLOB java.sql.Clob
ROWID java.sql.Types.ROWID
ARRAY 1 java.sql.Array
ROW 1 java.sql.Struct
XML-AS-CLOB java.sql.Types.SQLXML
Hinweise:
  1. Dieser Parameterdatentyp wird nur für gespeicherte Prozeduren unterstützt.
  2. Für eine gespeicherte Prozedur oder benutzerdefinierte Funktion auf einem Db2 auf Linux-, UNIX-und Windows-Systemen -Server ist nur der Datentyp first gültig.
  3. BIGINT ist für Verbindungen zu Db2 Version 9.1 für Datenbankserver von z/OS oder höher oder Db2 Version 9.1 für Linux, UNIX und Windows oder höher gültig.
  4. Die Parameter DECFLOAT in Java-Routinen gelten nur für Verbindungen zu Db2 Version 9.1 für Datenbankserver von z/OS oder höher. DECFLOAT-Parameter in Java-Routinen werden für Verbindungen zu für Linux, UNIX und Windows oder Db2 für IBM i nicht unterstützt. Die Verwendung von DECFLOAT erfordert das SDK für Java Version 5 (1.5) oder höher.
  5. BINARY und VARBINARY sind gültig für Verbindungen zu Db2 Version 9.1 für Datenbankserver oder spätere Datenbankserver oder Db2 für IBM i 5/OS V5R3-und spätere Datenbankserver.
  6. p gibt die Genauigkeit der Zeitmarke an. Dies ist die Anzahl der Ziffern im Bruchteil der Zeitmarke. 0 < = p < =12. Der Standardwert ist 6. TIMESTAMP (p) wird für Verbindungen mit Db2 auf Linux-, UNIX-und Windows-Systemen V9.7 und höher und Db2 for z/OS V10 und später unterstützt.
  7. Die Klausel WITH TIME ZONE wird nur für Verbindungen mit Db2 for z/OS V10 und später unterstützt.