Junior
Išvardinkite pagrindinius duomenų tipus, naudojamus JDBC, ir paaiškinkite, kaip jie susiję su Java duomenų tipais.
sobes.tech AI
Atsakymas iš AI
Pagrindiniai JDBC duomenų tipai apibrėžti java.sql.Types klasėje. Jie atstovauja standartinius SQL tipus. JVM duomenų tipai Java kalboje apibrėžti kalbos specifikacijoje. JDBC suteikia šių dviejų tipų rinkinų atitiktį (mapping).
java.sql.Types pagrindiniai tipai:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Gaunant duomenų gavimo metu (ResultSet) tarp JDBC tipų ir Java tipų vyksta šis mapingas:
| JDBC tipas | Java tipas (get) |
Pastabos |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Rekomenduojama |
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 |
Pastaba: Skaitmenų tipams, be pirminių tipų, galima naudoti atitinkamus objektinius klases (Boolean, Byte, Short, Integer, Long, Float, Double) NULL reikšmių apdorojimui.
Duomenų nustatymo metu (PreparedStatement) dažniausiai naudojamas atvirkštinis mapingas, tačiau yra išimčių ir preferencijų. Pavyzdžiui, DECIMAL geriau naudoti su BigDecimal:
Naudojimo pavyzdys:
// Metodas duomenų gavimui iš ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Gauti eilutės reikšmę iš stulpelio
return rs.getString(columnName);
}
// Metodas parametro nustatymui PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Nustatyti sveikojo skaičiaus reikšmę į užklausos parametrą
ps.setInt(parameterIndex, value);
}