Énumérez les principaux types de données utilisés dans JDBC et expliquez comment ils sont liés aux types de données en Java.
sobes.tech IA
Réponse de l'IA
Les principaux types de données JDBC sont définis dans la classe java.sql.Types. Ils représentent des types SQL standard. Les types de données JVM en Java sont définis dans la spécification du langage. JDBC fournit une correspondance (mapping) entre ces deux ensembles de types.
Principaux types dans java.sql.Types :
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Correspondance entre types JDBC et types Java lors de la récupération des données (depuis ResultSet) :
| Type JDBC | Type Java (get) |
Notes |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Recommandé |
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 |
Remarque : Pour les types numériques, en plus des types primitifs, vous pouvez utiliser les classes enveloppantes correspondantes (Boolean, Byte, Short, Integer, Long, Float, Double) pour gérer les valeurs NULL.
Correspondance lors de l'insertion de données (dans PreparedStatement) : en général, la correspondance inverse est utilisée, mais il existe des exceptions et des préférences. Par exemple, pour DECIMAL, il est préférable d'utiliser BigDecimal.
Exemple d'utilisation :
// Méthode pour obtenir des données de ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Obtenir la valeur de chaîne de la colonne
return rs.getString(columnName);
}
// Méthode pour définir une valeur dans PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Définir la valeur entière du paramètre
ps.setInt(parameterIndex, value);
}