Sobes.tech
Junior

JDBCде колдонулган негизги маалымат түрлөрүн тизмелеп, алар Javaдагы маалымат түрлөрү менен кандай байланышта экенин түшүндүрүңүз.

sobes.tech AI

AIден жооп

JDBC негизги маалымат түрлөрү java.sql.Types класында аныкталган. Алар стандарттуу SQL түрлөрүн көрсөтөт. Javaда JVM түрлөрү тилдин спецификациясында аныкталган. JDBC бул эки түр топтомунун ортосунда мапингди камсыз кылат:

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

Маалыматтарды алуу учурунда (ResultSet ичиндеги) JDBC түрлөрү менен Java түрлөрүнүн ортосунда мапинг:

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);
}