Sobes.tech
Middle

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.