Junior
Loetlege JDBC-s kasutatavad peamised andmetüübid ja selgitage, kuidas need on seotud Java andmetüüpidega.
sobes.tech AI
Vastus AI-lt
JDBC peamised andmetüübid on määratletud klassis java.sql.Types. Need esindavad standardseid SQL-tüüpe. JVM-tüübid Java keeles on määratletud keele spetsifikatsioonis. JDBC pakub nende kahe tüüpi kogumi vahel (mapping) seost.
java.sql.Types põhityüppeid:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Andmete saamise ajal (ResultSet) toimub JDBC tüüpide ja Java tüüpide vahel järgmine mappimine:
| JDBC tüüp | Java tüüp (get) |
Märkused |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Soovitatav |
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 |
Märkus: Numbriliste tüüpide puhul, lisaks primitiivsetele tüüpidele, saab kasutada vastavaid objekti klasse (Boolean, Byte, Short, Integer, Long, Float, Double) NULL väärtuste töötlemiseks.
Andmete seadistamisel (PreparedStatement) kasutatakse tavaliselt vastupidist mappimist, kuid on erandeid ja eelistusi. Näiteks DECIMAL jaoks on parem kasutada BigDecimal:
Näide kasutusest:
// Meetod andmete saamiseks ResultSetist
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Saame string väärtuse veerult
return rs.getString(columnName);
}
// Meetod parameetri seadistamiseks PreparedStatementis
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Seadistame täisarvu väärtuse päringuparameetrile
ps.setInt(parameterIndex, value);
}