Nennen Sie die wichtigsten Datentypen, die in JDBC verwendet werden, und erklären Sie, wie sie mit den Java-Datentypen verbunden sind.
sobes.tech KI
Antwort von AI
| SQL-Datentyp | Java-Datentyp | Beschreibung |
|---|---|---|
CHAR, VARCHAR, LONGVARCHAR |
String |
Zeichenketten |
NUMERIC, DECIMAL |
BigDecimal |
Zahlen mit fester Kommazahl |
BIT, BOOLEAN |
boolean |
Logische Werte |
TINYINT |
byte |
Ganze Zahl von -128 bis 127 |
SMALLINT |
short |
Ganze Zahl von -32768 bis 32767 |
INTEGER |
int |
Ganze Zahl |
BIGINT |
long |
Große ganze Zahl |
REAL |
float |
Gleitkommazahl einfacher Präzision |
FLOAT, DOUBLE |
double |
Gleitkommazahl doppelter Präzision |
BINARY, VARBINARY, LONGVARBINARY |
byte[] |
Binärdaten |
DATE |
java.sql.Date |
Datum (Jahr, Monat, Tag) |
TIME |
java.sql.Time |
Zeit (Stunde, Minute, Sekunde) |
TIMESTAMP |
java.sql.Timestamp |
Datum und Uhrzeit mit Millisekunden |
BLOB |
java.sql.Blob |
Binäres Objekt großer Größe |
CLOB |
java.sql.Clob |
Zeichenobjekt großer Größe |
ARRAY |
java.sql.Array |
Array von Werten |
STRUCT |
java.sql.Struct |
Strukturierter Typ |
REF |
java.sql.Ref |
Referenz auf einen strukturierten Typ |
DATALINK |
java.net.URL |
Link zu externen Ressourcen |
JAVA_OBJECT |
Object |
Serialisiertes Java-Objekt (abhängig von der Implementierung) |
ROWID |
java.sql.RowId |
Zeilenkennung (abhängig vom DBMS) |
NCHAR, NVARCHAR, LONGNVARCHAR |
String |
Nationalisierte Zeichenketten |
NCLOB |
java.sql.NClob |
Nationalisiertes Zeichenobjekt großer Größe |
SQLXML |
java.sql.SQLXML |
XML-Daten |
Die JDBC-Spezifikation (Java Database Connectivity) definiert die Standard-SQL-Typen in der Klasse java.sql.Types. Diese Typen sind numerische Konstanten. JDBC-Treiber mappen diese SQL-Typen auf geeignete Java-Datentypen beim Lesen von Daten aus der Datenbank (z.B. mit getXXX()-Methoden von ResultSet) und beim Schreiben von Daten in die Datenbank (z.B. mit setXXX()-Methoden von PreparedStatement).
Die Zuordnung wird durch die Implementierung des JDBC-Treibers einer bestimmten Datenbank bestimmt, die die internen Datentypen der Datenbank auf die java.sql.Types und anschließend auf Java-Datentypen abbildet. Dieses Mapping ist in der JDBC-Spezifikation dokumentiert und kann zwischen Treibern leicht variieren, wobei die in der Tabelle dargestellten Hauptzuordnungen standardisiert sind.
Beispiel zum Lesen von Daten aus ResultSet:
// Angenommen, rs ist ein ResultSet
String name = rs.getString("column_name_varchar");
int id = rs.getInt("column_name_integer");
BigDecimal value = rs.getBigDecimal("column_name_numeric");
Date date = rs.getDate("column_name_date");
Beispiel zum Setzen von Parametern in PreparedStatement:
// Angenommen, pstmt ist ein PreparedStatement
String name = "Test Name";
int id = 123;
BigDecimal value = new BigDecimal("100.50");
Date date = new Date(System.currentTimeMillis());
pstmt.setString(1, name); // 1 ist die Parameter-Nummer (beginnend bei 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);
JDBC bemüht sich um maximale Kompatibilität, aber für spezielle oder herstellerspezifische Datentypen können besondere Ansätze oder die Verwendung von getObject() / setObject() mit Typumwandlung oder instanceof-Prüfungen erforderlich sein.