Sobes.tech
Middle

Καταγράψτε τους βασικούς τύπους δεδομένων που χρησιμοποιούνται στο JDBC και εξηγήστε πώς σχετίζονται με τους τύπους δεδομένων της Java.

sobes.tech AI

Απάντηση από AI

Τύπος δεδομένων SQL Τύπος δεδομένων Java Περιγραφή
CHAR, VARCHAR, LONGVARCHAR String Συμβολοσειρές χαρακτήρων
NUMERIC, DECIMAL BigDecimal Αριθμοί με σταθερό σημείο
BIT, BOOLEAN boolean Λογικές τιμές
TINYINT byte Ολόκληρος αριθμός από -128 έως 127
SMALLINT short Ολόκληρος αριθμός από -32768 έως 32767
INTEGER int Ολόκληρος αριθμός
BIGINT long Μεγάλος ολόκληρος αριθμός
REAL float Αριθμός κινητής υποδιαστολής απλής ακρίβειας
FLOAT, DOUBLE double Αριθμός κινητής υποδιαστολής διπλής ακρίβειας
BINARY, VARBINARY, LONGVARBINARY byte[] Δεδομένα δυαδικών
DATE java.sql.Date Ημερομηνία (έτος, μήνας, ημέρα)
TIME java.sql.Time Ώρα (ώρα, λεπτό, δευτερόλεπτο)
TIMESTAMP java.sql.Timestamp Ημερομηνία και ώρα με milliseconds
BLOB java.sql.Blob Μεγάλο δυαδικό αντικείμενο
CLOB java.sql.Clob Μεγάλο κειμενικό αντικείμενο
ARRAY java.sql.Array Πίνακας τιμών
STRUCT java.sql.Struct Δομημένος τύπος
REF java.sql.Ref Αναφορά σε δομημένο τύπο
DATALINK java.net.URL Σύνδεσμος σε εξωτερική πηγή
JAVA_OBJECT Object Αποθηκευμένο αντικείμενο Java (εξαρτάται από την υλοποίηση)
ROWID java.sql.RowId Αναγνωριστικό γραμμής (εξαρτάται από το SGBD)
NCHAR, NVARCHAR, LONGNVARCHAR String Εθνικοποιημένες συμβολοσειρές
NCLOB java.sql.NClob Εθνικοποιημένο μεγάλο κειμενικό αντικείμενο
SQLXML java.sql.SQLXML Δεδομένα XML

Το JDBC (Java Database Connectivity) ορίζει τα πρότυπα τύπων SQL στην κλάση java.sql.Types. Αυτοί οι τύποι αντιπροσωπεύονται από αριθμητικές σταθερές. Οι οδηγοί JDBC αντιστοιχίζουν αυτούς τους τύπους SQL σε κατάλληλους τύπους Java κατά την ανάγνωση δεδομένων από τη βάση (π.χ. με τις μεθόδους getXXX() της ResultSet) και κατά την εγγραφή δεδομένων στη βάση (π.χ. με τις μεθόδους setXXX() της PreparedStatement).

Η αντιστοιχία καθορίζεται από το πώς ο συγκεκριμένος οδηγός βάσης δεδομένων υλοποιεί την απεικόνιση μεταξύ των εσωτερικών τύπων δεδομένων της βάσης και των java.sql.Types, και στη συνέχεια στους τύπους δεδομένων Java. Αυτή η απεικόνιση τεκμηριώνεται στην προδιαγραφή JDBC και μπορεί να διαφέρει ελαφρώς μεταξύ των οδηγών, αν και οι βασικές αντιστοιχίσεις στον πίνακα είναι τυπικές.

Παράδειγμα ανάγνωσης δεδομένων από το ResultSet:

// Υποθέτοντας ότι το 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");

Παράδειγμα ρύθμισης παραμέτρων στο PreparedStatement:

// Υποθέτοντας ότι το 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 η θέση της παραμέτρου (αρχίζει από 1)
pstmt.setInt(2, id);
pstmt.setBigDecimal(3, value);
pstmt.setDate(4, date);

Το JDBC προσπαθεί να διασφαλίσει τη μέγιστη συμβατότητα, αλλά για ειδικούς ή vendor-εξαρτώμενους τύπους δεδομένων μπορεί να απαιτούνται ειδικές προσεγγίσεις, όπως η χρήση των getObject() / setObject() με μετατροπές τύπων ή ελέγχους με instanceof.