Sobes.tech
Junior

Navedite glavne tipove podataka koji se koriste u JDBC i objasnite kako su povezani sa tipovima podataka u Javi.

sobes.tech АИ

Одговор од АИ

Основни типови податки JDBC су дефинисани у класи java.sql.Types. Они представљају стандардне SQL типове. JVM типови података у Јави су дефинисани у спецификацији језика. JDBC пружа мапирање (mapping) између ова два скупа типова.

Основни типови у 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

Мапирање између JDBC типова и Java типова при добијању података (из ResultSet):

JDBC Тип Java Тип (get) Напомене
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Препоручено
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

Напомена: За бројчане типове, поред примитивних типова, могу се користити одговарајуће класе-обвивки (Boolean, Byte, Short, Integer, Long, Float, Double) за обраду вредности NULL.

При постављању података (у PreparedStatement) обично се користи обрнуто мапирање, али постоје изузеци и преференције. На пример, за DECIMAL је боље користити BigDecimal.

Пример употребе:

// Метод за добијање података из ResultSet-а
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Добијање стринг вредности из колоне
    return rs.getString(columnName);
}

// Метод за постављање параметра у PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Постављање целобројне вредности
    ps.setInt(parameterIndex, value);
}