Elenca i principali tipi di dati utilizzati in JDBC e spiega come sono correlati ai tipi di dati in Java.
sobes.tech AI
Risposta dell'AI
I principali tipi di dati JDBC sono definiti nella classe java.sql.Types. Rappresentano i tipi SQL standard. I tipi di dati JVM in Java sono definiti nella specifica del linguaggio. JDBC fornisce una mappatura (mapping) tra questi due set di tipi.
Principali tipi in java.sql.Types:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Mapping tra tipi JDBC e tipi Java durante il recupero dei dati (da ResultSet):
| Tipo JDBC | Tipo Java (get) |
Note |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Consigliato |
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 |
Nota: Per i tipi numerici, oltre ai tipi primitivi, è possibile utilizzare le classi wrapper corrispondenti (Boolean, Byte, Short, Integer, Long, Float, Double) per gestire valori NULL.
Durante l'impostazione dei dati (in PreparedStatement), di solito si utilizza l'inverso mapping, ma ci sono eccezioni e preferenze. Ad esempio, per DECIMAL è meglio usare BigDecimal.
Esempio di utilizzo:
// Metodo per ottenere dati da ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Ottieni il valore stringa dalla colonna
return rs.getString(columnName);
}
// Metodo per impostare un valore in PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Imposta il valore intero del parametro
ps.setInt(parameterIndex, value);
}