Sobes.tech
Junior

Uzskaitiet galvenos datu tipus, kas tiek izmantoti JDBC, un paskaidrojiet, kā tie ir saistīti ar Java datu tipiem.

sobes.tech AI

Atbilde no AI

Galvenie JDBC datu tipi ir noteikti java.sql.Types klasē. Tie pārstāv standarta SQL tipus. JVM datu tipi Java valodā ir noteikti valodas specifikācijā. JDBC nodrošina šo divu tipu kopumu (mapping) savstarpēju saistību.

java.sql.Types galvenie tipi:

  • 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

Datu iegūšanas laikā (ResultSet) starp JDBC tipiem un Java tipiem notiek šāds mapeings:

JDBC tips Java tips (get) Piezīmes
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Ieteicams
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

Piezīme: Skaitlisko tipu gadījumā, papildus primitivajiem tipiem, var izmantot atbilstošas objektu klases (Boolean, Byte, Short, Integer, Long, Float, Double) NULL vērtību apstrādei.

Datu iestatīšanas laikā (PreparedStatement) parasti tiek izmantots pretējais mapeings, bet ir izņēmumi un priekšroka. Piemēram, DECIMAL labāk ir izmantot ar BigDecimal:

Piemērs lietošanai:

// Metode datu iegūšanai no ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Saņem teksta vērtību no kolonnas
    return rs.getString(columnName);
}

// Metode parametra iestatīšanai PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Iestata vesela skaitļa vērtību uz vaicājuma parametra
    ps.setInt(parameterIndex, value);
}