Sobes.tech
Middle

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.