Sobes.tech
Junior

გთხოვთ, ჩამოთვალეთ JDBC-ში გამოყენებული ძირითადი მონაცემთა ტიპები და ახსენით, როგორ უკავშირდება ისინი Java-ს მონაცემთა ტიპებს.

sobes.tech AI

პასუხი AI-სგან

JDBC-ის ძირითადი მონაცემთა ტიპები განსაზღვრულია java.sql.Types კლასში. ისინი წარმოადგენენ სტანდარტულ SQL ტიპებს. JVM-ის მონაცემთა ტიპები Java-ში განსაზღვრულია ენის სპეციფიკაციაში. 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);
}