Liste os principais tipos de dados utilizados no JDBC e explique como eles estão relacionados com os tipos de dados Java.
sobes.tech IA
Resposta da IA
| Tipo de dados SQL | Tipo de dados Java | Descrição |
|---|---|---|
CHAR, VARCHAR, LONGVARCHAR |
String |
Cadeias de caracteres |
NUMERIC, DECIMAL |
BigDecimal |
Números com ponto decimal fixo |
BIT, BOOLEAN |
boolean |
Valores lógicos |
TINYINT |
byte |
Número inteiro de -128 a 127 |
SMALLINT |
short |
Número inteiro de -32768 a 32767 |
INTEGER |
int |
Número inteiro |
BIGINT |
long |
Número inteiro grande |
REAL |
float |
Número de ponto flutuante de precisão simples |
FLOAT, DOUBLE |
double |
Número de ponto flutuante de dupla precisão |
BINARY, VARBINARY, LONGVARBINARY |
byte[] |
Dados binários |
DATE |
java.sql.Date |
Data (ano, mês, dia) |
TIME |
java.sql.Time |
Hora (hora, minuto, segundo) |
TIMESTAMP |
java.sql.Timestamp |
Data e hora com milissegundos |
BLOB |
java.sql.Blob |
Objeto binário de grande tamanho |
CLOB |
java.sql.Clob |
Objeto de caracteres de grande tamanho |
ARRAY |
java.sql.Array |
Matriz de valores |
STRUCT |
java.sql.Struct |
Tipo estruturado |
REF |
java.sql.Ref |
Referência a um tipo estruturado |
DATALINK |
java.net.URL |
Enlace a recurso externo |
JAVA_OBJECT |
Object |
Objeto Java serializado (depende da implementação) |
ROWID |
java.sql.RowId |
Identificador de linha (depende do SGBD) |
NCHAR, NVARCHAR, LONGNVARCHAR |
String |
Cadeias de caracteres nacionalizadas |
NCLOB |
java.sql.NClob |
Objeto de caracteres nacionalizados de grande tamanho |
SQLXML |
java.sql.SQLXML |
Dados XML |
A especificação JDBC (Java Database Connectivity) define os tipos SQL padrão na classe java.sql.Types. Esses tipos representam constantes numéricas. Os controladores JDBC mapeiam esses tipos SQL para tipos de dados Java adequados ao ler dados da base (por exemplo, usando métodos getXXX() de ResultSet) e ao escrever dados na base (por exemplo, usando métodos setXXX() de PreparedStatement).
A relação é determinada por como o controlador JDBC de uma base de dados específica implementa o mapeamento entre os tipos de dados internos da base e os java.sql.Types, e depois para os tipos de dados Java. Este mapeamento está documentado na especificação JDBC e pode variar ligeiramente entre controladores, embora os principais mapeamentos apresentados na tabela sejam padrão.
Exemplo de obtenção de dados de ResultSet:
// Assume-se que rs é um ResultSet
String name = rs.getString("column_name_varchar");
int id = rs.getInt("column_name_integer");
BigDecimal value = rs.getBigDecimal("column_name_numeric");
Date date = rs.getDate("column_name_date");
Exemplo de definição de parâmetros em PreparedStatement:
// Assume-se que pstmt é um PreparedStatement
String name = "Test Name";
int id = 123;
BigDecimal value = new BigDecimal("100.50");
Date date = new Date(System.currentTimeMillis());
pstmt.setString(1, name); // 1 - número do parâmetro (a partir de 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);
O JDBC tenta garantir a máxima compatibilidade, mas para tipos específicos ou dependentes do fornecedor podem ser necessárias abordagens especiais ou uso dos métodos getObject() / setObject() com conversão de tipos ou verificação com instanceof.