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.