Enumerați principalele tipuri de date utilizate în JDBC și explicați cum sunt legate de tipurile de date din Java.
sobes.tech AI
Răspuns de la AI
Tipurile principale de date JDBC sunt definite în clasa java.sql.Types. Acestea reprezintă tipurile SQL standard. Tipurile de date JVM în Java sunt definite în specificația limbajului. JDBC oferă o mapare (mapping) între aceste două seturi de tipuri.
Tipurile principale în java.sql.Types:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Maparea între tipurile JDBC și tipurile Java la obținerea datelor (din ResultSet):
| Tip JDBC | Tip Java (get) |
Observații |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Recomandat |
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 |
Notă: Pentru tipurile numerice, pe lângă tipurile primitive, se pot folosi clasele de tip wrapper (Boolean, Byte, Short, Integer, Long, Float, Double) pentru tratarea valorilor NULL.
Maparea la setarea datelor (în PreparedStatement): de obicei, se folosește maparea inversă, dar există excepții și preferințe. De exemplu, pentru DECIMAL este mai bine să folosiți BigDecimal.
Exemplu de utilizare:
// Metodă pentru obținerea datelor din ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Obțineți valoarea de tip string din coloană
return rs.getString(columnName);
}
// Metodă pentru setarea unui parametru în PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Setați valoarea întreagă în parametru
ps.setInt(parameterIndex, value);
}