Sobes.tech
Junior

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:

  • 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

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