Избройте основните типове данни, използвани в JDBC, и обяснете как те са свързани с типовете данни в Java.
sobes.tech AI
Отговор от AI
Основните типове данни в JDBC са дефинирани в класа java.sql.Types. Те представляват стандартните SQL типове. JVM типовете данни в Java са дефинирани в спецификацията на езика. JDBC предоставя съответствие (mapping) между тези два набора от типове.
Основните типове в java.sql.Types:
BOOLEANTINYINTSMALLINTINTEGERBIGINTREALFLOATDOUBLEDECIMALNUMERICCHARVARCHARLONGVARCHARDATETIMETIMESTAMPBINARYVARBINARYLONGVARBINARYBLOBCLOBNCHARNVARCHARLONGNVARCHARNCLOBSQLXML
Карта между JDBC типовете и Java типовете при получаване на данни (от ResultSet):
| JDBC Тип | Java Тип (get) |
Забележки |
|---|---|---|
BOOLEAN, BIT |
boolean |
|
TINYINT |
byte |
|
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
DECIMAL, NUMERIC |
java.math.BigDecimal |
Препоръчително |
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 |
Забележка: За числовите типове, освен примитивните, могат да се използват съответните класове-обвивки (Boolean, Byte, Short, Integer, Long, Float, Double) за обработка на стойности NULL.
Когато се задават данни (в PreparedStatement), обикновено се използва обратното картографиране, но има изключения и предпочитания. Например, за DECIMAL е по-добре да се използва BigDecimal.
Пример за използване:
// Метод за получаване на данни от ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
// Получаване на низова стойност от колоната
return rs.getString(columnName);
}
// Метод за задаване на параметър в PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
// Задаване на цяло число
ps.setInt(parameterIndex, value);
}