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