Sobes.tech
Middle

Enumerați principalele tipuri de date utilizate în JDBC și explicați cum sunt legate de tipurile de date Java.

sobes.tech AI

Răspuns de la AI

Tip de date SQL Tip de date Java Descriere
CHAR, VARCHAR, LONGVARCHAR String Șiruri de caractere
NUMERIC, DECIMAL BigDecimal Numere cu punct fix
BIT, BOOLEAN boolean Valori logice
TINYINT byte Număr întreg de la -128 la 127
SMALLINT short Număr întreg de la -32768 la 32767
INTEGER int Număr întreg
BIGINT long Număr întreg mare
REAL float Număr în virgulă mobilă cu precizie simplă
FLOAT, DOUBLE double Număr în virgulă mobilă cu precizie dublă
BINARY, VARBINARY, LONGVARBINARY byte[] Date binare
DATE java.sql.Date Data (an, lună, zi)
TIME java.sql.Time Timp (oră, minut, secundă)
TIMESTAMP java.sql.Timestamp Data și ora cu milisecunde
BLOB java.sql.Blob Obiect binar de dimensiuni mari
CLOB java.sql.Clob Obiect text de dimensiuni mari
ARRAY java.sql.Array Array de valori
STRUCT java.sql.Struct Tip structurat
REF java.sql.Ref Referință la un tip structurat
DATALINK java.net.URL Link către resursă externă
JAVA_OBJECT Object Obiect Java serializat (depinde de implementare)
ROWID java.sql.RowId Identificator de rând (depinde de SGBD)
NCHAR, NVARCHAR, LONGNVARCHAR String Șiruri de caractere naționalizate
NCLOB java.sql.NClob Obiect text naționalizat de dimensiuni mari
SQLXML java.sql.SQLXML Date XML

JDBC (Java Database Connectivity) specifică tipurile SQL standard în clasa java.sql.Types. Aceste tipuri sunt reprezentate ca constante numerice. Driver-ele JDBC mapează aceste tipuri SQL la tipuri Java corespunzătoare la citirea datelor din bază (de exemplu, folosind metodele getXXX() din ResultSet) și la scrierea datelor în bază (de exemplu, folosind metodele setXXX() din PreparedStatement).

Maparea este determinată de modul în care driver-ul specific al bazei de date implementează corespondența între tipurile interne ale bazei și java.sql.Types, apoi la tipurile Java. Această mapare este documentată în specificația JDBC și poate varia ușor între driver-e, deși mapările principale din tabel sunt standard.

Exemplu de citire a datelor din ResultSet:

// Presupunând că rs este un 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");

Exemplu de setare a parametrilor în PreparedStatement:

// Presupunând că pstmt este un 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 - poziția parametrului (începând de la 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);

JDBC încearcă să asigure compatibilitate maximă, dar pentru tipuri de date specifice sau dependente de vendor, pot fi necesare abordări speciale, precum utilizarea getObject() / setObject() cu cast-uri de tip sau verificări cu instanceof.