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