Sobes.tech
Junior

Sorolja fel a JDBC-ben használt fő adat típusokat, és magyarázza el, hogyan kapcsolódnak a Java adat típusaihoz.

sobes.tech MI

Válasz az MI-től

A JDBC fő adat típusokat a java.sql.Types osztály határozza meg. Ezek az SQL szabványos típusokat képviselik. A JVM adat típusokat a Java nyelvi specifikáció határozza meg. A JDBC egy mapping-et biztosít ezek között a típusok között.

A java.sql.Types fő típusai:

  • 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

A JDBC típusok és a Java típusok közötti mapping adatlekéréskor (a ResultSet-ből):

JDBC típus Java típus (get) Megjegyzések
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Ajánlott
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

Megjegyzés: Numerikus típusok esetén, a primitív típusokon kívül, használhatók a megfelelő wrapper osztályok (Boolean, Byte, Short, Integer, Long, Float, Double) a NULL értékek kezelésére.

Az adatbeállítás (a PreparedStatement-ben): általában fordított mapping-et használnak, de vannak kivételek és preferenciák. Például a DECIMAL esetén jobb a BigDecimal használata.

Használati példa:

// Adatok lekérése a ResultSet-ből
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Szöveges érték lekérése a oszlopból
    return rs.getString(columnName);
}

// Paraméter beállítása a PreparedStatement-ben
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Egész szám érték beállítása
    ps.setInt(parameterIndex, value);
}