Sobes.tech
Junior

Liste os principais tipos de dados utilizados no JDBC e explique como eles estão relacionados com os tipos de dados em Java.

sobes.tech IA

Resposta da IA

Os principais tipos de dados JDBC estão definidos na classe java.sql.Types. Eles representam tipos SQL padrão. Os tipos de dados JVM em Java são definidos na especificação da linguagem. O JDBC fornece um mapeamento (mapping) entre esses dois conjuntos de tipos.

Principais tipos em 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

Correspondência entre tipos JDBC e tipos Java ao obter dados (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, além de tipos primitivos, é possível usar as classes envolventes correspondentes (Boolean, Byte, Short, Integer, Long, Float, Double) para lidar com valores NULL.

Ao definir dados (em PreparedStatement), geralmente é usada a correspondência inversa, mas há exceções e preferências. Por exemplo, para DECIMAL, é melhor usar BigDecimal.

Exemplo de uso:

// Método para obter dados de ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Obter valor de string da coluna
    return rs.getString(columnName);
}

// Método para definir valor em PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Definir valor inteiro do parâmetro
    ps.setInt(parameterIndex, value);
}