Sobes.tech
Junior

Išvardinkite pagrindinius duomenų tipus, naudojamus JDBC, ir paaiškinkite, kaip jie susiję su Java duomenų tipais.

sobes.tech AI

Atsakymas iš AI

Pagrindiniai JDBC duomenų tipai apibrėžti java.sql.Types klasėje. Jie atstovauja standartinius SQL tipus. JVM duomenų tipai Java kalboje apibrėžti kalbos specifikacijoje. JDBC suteikia šių dviejų tipų rinkinų atitiktį (mapping).

java.sql.Types pagrindiniai tipai:

  • 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

Gaunant duomenų gavimo metu (ResultSet) tarp JDBC tipų ir Java tipų vyksta šis mapingas:

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

Pastaba: Skaitmenų tipams, be pirminių tipų, galima naudoti atitinkamus objektinius klases (Boolean, Byte, Short, Integer, Long, Float, Double) NULL reikšmių apdorojimui.

Duomenų nustatymo metu (PreparedStatement) dažniausiai naudojamas atvirkštinis mapingas, tačiau yra išimčių ir preferencijų. Pavyzdžiui, DECIMAL geriau naudoti su BigDecimal:

Naudojimo pavyzdys:

// Metodas duomenų gavimui iš ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Gauti eilutės reikšmę iš stulpelio
    return rs.getString(columnName);
}

// Metodas parametro nustatymui PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Nustatyti sveikojo skaičiaus reikšmę į užklausos parametrą
    ps.setInt(parameterIndex, value);
}