Sobes.tech
Junior

Enumere los principales tipos de datos utilizados en JDBC y explique cómo se relacionan con los tipos de datos en Java.

sobes.tech AI

Respuesta de la IA

Los tipos principales de datos JDBC están definidos en la clase java.sql.Types. Representan tipos SQL estándar. Los tipos de datos JVM en Java están definidos en la especificación del lenguaje. JDBC proporciona un mapeo entre estos dos conjuntos de tipos.

Tipos principales en 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

La correspondencia entre tipos JDBC y tipos Java al obtener datos (de ResultSet):

Tipo JDBC Tipo Java (get) Notas
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Recomendado
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: Para tipos numéricos, además de los tipos primitivos, se pueden usar las clases envolventes correspondientes (Boolean, Byte, Short, Integer, Long, Float, Double) para manejar valores NULL.

La correspondencia al establecer datos (en PreparedStatement): generalmente se usa la correspondencia inversa, pero hay excepciones y preferencias. Por ejemplo, para DECIMAL es mejor usar BigDecimal.

Ejemplo de uso:

// Método para obtener datos de ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Obtener valor de cadena de la columna
    return rs.getString(columnName);
}

// Método para establecer un valor en PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Establecer valor entero en el parámetro de la consulta
    ps.setInt(parameterIndex, value);
}