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