Sobes.tech
Middle

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.