Navedite glavne tipove podataka koji se koriste u JDBC i objasnite kako su povezani sa Java tipovima podataka.
sobes.tech АИ
Одговор од АИ
| Tip podataka SQL | Tip podataka Java | Opis |
|---|---|---|
CHAR, VARCHAR, LONGVARCHAR |
String |
Tekstualni nizovi |
NUMERIC, DECIMAL |
BigDecimal |
Brojevi sa fiksnom decimalnom tačkom |
BIT, BOOLEAN |
boolean |
Logičke vrednosti |
TINYINT |
byte |
Ceo broj od -128 do 127 |
SMALLINT |
short |
Ceo broj od -32768 do 32767 |
INTEGER |
int |
Celi brojevi |
BIGINT |
long |
Veliki celi brojevi |
REAL |
float |
Broj sa jednostranom preciznošću |
FLOAT, DOUBLE |
double |
Broj sa dvostrukom preciznošću |
BINARY, VARBINARY, LONGVARBINARY |
byte[] |
Binarni podaci |
DATE |
java.sql.Date |
Datum (godina, mesec, dan) |
TIME |
java.sql.Time |
Vreme (sat, minut, sekund) |
TIMESTAMP |
java.sql.Timestamp |
Datum i vreme sa milisekundama |
BLOB |
java.sql.Blob |
Veliki binarni objekat |
CLOB |
java.sql.Clob |
Veliki tekstualni objekat |
ARRAY |
java.sql.Array |
Niz vrednosti |
STRUCT |
java.sql.Struct |
Struktuirani tip |
REF |
java.sql.Ref |
Referenca na struktuirani tip |
DATALINK |
java.net.URL |
Link ka eksternom resursu |
JAVA_OBJECT |
Object |
Serijalizovani Java objekat (zavisi od implementacije) |
ROWID |
java.sql.RowId |
Identifikator reda (zavisi od SGBD-a) |
NCHAR, NVARCHAR, LONGNVARCHAR |
String |
Nacionalizovani tekstualni nizovi |
NCLOB |
java.sql.NClob |
Nacionalizovani veliki tekstualni objekat |
SQLXML |
java.sql.SQLXML |
XML podaci |
JDBC (Java Database Connectivity) specificira standardne SQL tipove u klasi java.sql.Types. Ovi tipovi su prikazani kao numeričke konstante. JDBC drajveri mapiraju ove SQL tipove na odgovarajuće Java tipove pri čitanju podataka iz baze (npr. pomoću metoda getXXX() klase ResultSet) i pri pisanju podataka u bazu (npr. pomoću metoda setXXX() klase PreparedStatement).
Mapiranje zavisi od toga kako konkretan drajver baze podataka implementira mapiranje između unutrašnjih tipova baze i java.sql.Types, a zatim na Java tipove. Ovo mapiranje je dokumentovano u JDBC specifikaciji i može se razlikovati između drajvera, iako su osnovne mapiranja u tabeli standardna.
Primer čitanja podataka iz ResultSet:
// Pretpostavljamo da je rs 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");
Primer postavljanja parametara u PreparedStatement:
// Pretpostavljamo da je pstmt 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. pozicija parametra (počinje od 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);
JDBC teži da obezbedi maksimalnu kompatibilnost, ali za specifične ili vendor-ovske tipove podataka mogu biti potrebni posebni pristupi, kao što je korišćenje getObject() / setObject() sa konverzijom tipova ili proverama instanceof.