Sobes.tech
Junior

Nennen Sie die wichtigsten Datentypen, die in JDBC verwendet werden, und erklären Sie, wie sie mit den Datentypen in Java verbunden sind.

sobes.tech KI

Antwort von AI

Die wichtigsten JDBC-Datentypen sind in der Klasse java.sql.Types definiert. Sie stellen standardmäßige SQL-Typen dar. JVM-Datentypen in Java sind in der Sprachspezifikation definiert. JDBC bietet eine Abbildung (Mapping) zwischen diesen beiden Typensätzen.

Haupttypen in java.sql.Types:

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • REAL
  • FLOAT
  • DOUBLE
  • DECIMAL
  • NUMERIC
  • CHAR
  • VARCHAR
  • LONGVARCHAR
  • DATE
  • TIME
  • TIMESTAMP
  • BINARY
  • VARBINARY
  • LONGVARBINARY
  • BLOB
  • CLOB
  • NCHAR
  • NVARCHAR
  • LONGNVARCHAR
  • NCLOB
  • SQLXML

Die Zuordnung zwischen JDBC-Typen und Java-Typen beim Abrufen von Daten (aus ResultSet):

JDBC-Typ Java-Typ (get) Hinweise
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Empfohlen
CHAR, VARCHAR, LONGVARCHAR String
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
BINARY, VARBINARY, LONGVARBINARY byte[]
BLOB java.sql.Blob
CLOB java.sql.Clob
NCHAR, NVARCHAR, LONGNVARCHAR String
NCLOB java.sql.NClob
SQLXML java.sql.SQLXML

Hinweis: Für numerische Typen können neben primitiven Typen auch die entsprechenden Wrapper-Klassen (Boolean, Byte, Short, Integer, Long, Float, Double) verwendet werden, um NULL-Werte zu behandeln.

Beim Setzen von Daten (in PreparedStatement) wird in der Regel die inverse Abbildung verwendet, es gibt jedoch Ausnahmen und Präferenzen. Zum Beispiel ist für DECIMAL die Verwendung von BigDecimal vorzuziehen.

Beispiel für die Verwendung:

// Methode zum Abrufen von Daten aus ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // String-Wert aus Spalte holen
    return rs.getString(columnName);
}

// Methode zum Setzen eines Werts in PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Ganzzahligen Wert für Parameter setzen
    ps.setInt(parameterIndex, value);
}