Wymień główne typy danych używane w JDBC i wyjaśnij, jak są one powiązane z typami danych w Javie.
sobes.tech AI
Odpowiedź od AI
Główne typy danych JDBC są zdefiniowane w klasie java.sql.Types. Reprezentują one standardowe typy SQL. Typy danych JVM w Javie są zdefiniowane w specyfikacji języka. JDBC zapewnia mapowanie (mapping) między tymi dwoma zestawami typów.
Główne typy w java.sql.Types:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Mapowanie między typami JDBC a typami Java podczas pobierania danych (z ResultSet):
| Typ JDBC | Typ Java (get) |
Uwagi |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Zalecane |
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 |
Uwaga: Dla typów numerycznych, oprócz typów prymitywnych, można używać odpowiadających im klas opakowujących (Boolean, Byte, Short, Integer, Long, Float, Double) do obsługi wartości NULL.
Podczas ustawiania danych (w PreparedStatement) zazwyczaj stosuje się odwrotne mapowanie, ale istnieją wyjątki i preferencje. Na przykład dla DECIMAL lepiej używać BigDecimal.
Przykład użycia:
// Metoda pobierająca dane z ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Pobierz wartość tekstową z kolumny
return rs.getString(columnName);
}
// Metoda ustawiająca wartość w PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Ustaw wartość całkowitą parametru
ps.setInt(parameterIndex, value);
}