Sobes.tech
Junior

É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 :

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • REAL
  • FLOAT
  • DOUBLE
  • DECIMAL
  • NUMERIC
  • CHAR
  • VARCHAR
  • LONGVARCHAR
  • DATE
  • TIME
  • TIMESTAMP
  • BINARY
  • VARBINARY
  • LONGVARBINARY
  • BLOB
  • CLOB
  • NCHAR
  • NVARCHAR
  • LONGNVARCHAR
  • NCLOB
  • SQLXML

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);
}