Sobes.tech
Junior

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

sobes.tech AI

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

Οι βασικοί τύποι δεδομένων JDBC ορίζονται στην κλάση java.sql.Types. Αντιπροσωπεύουν τους τυπικούς τύπους SQL. Οι τύποι δεδομένων JVM στη Java ορίζονται στην προδιαγραφή της γλώσσας. Το JDBC παρέχει μια αντιστοίχιση (mapping) μεταξύ αυτών των δύο συνόλων τύπων.

Οι βασικοί τύποι στο java.sql.Types:

  • BOOLEAN
  • TINYINT
  • SMALLINT
  • INTEGER
  • BIGINT
  • REAL
  • FLOAT
  • DOUBLE
  • DECIMAL
  • NUMERIC
  • CHAR
  • VARCHAR
  • LONGVARCHAR
  • DATE
  • TIME
  • TIMESTAMP
  • BINARY
  • VARBINARY
  • LONGVARBINARY
  • BLOB
  • CLOB
  • NCHAR
  • NVARCHAR
  • LONGNVARCHAR
  • NCLOB
  • SQLXML

Η αντιστοίχιση μεταξύ τύπων JDBC και τύπων Java κατά την λήψη δεδομένων (από το ResultSet):

Τύπος JDBC Τύπος Java (get) Σημειώσεις
BOOLEAN, BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
DECIMAL, NUMERIC java.math.BigDecimal Συνιστάται
CHAR, VARCHAR, LONGVARCHAR String
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
BINARY, VARBINARY, LONGVARBINARY byte[]
BLOB java.sql.Blob
CLOB java.sql.Clob
NCHAR, NVARCHAR, LONGNVARCHAR String
NCLOB java.sql.NClob
SQLXML java.sql.SQLXML

Σημείωση: Για αριθμητικούς τύπους, εκτός από τους primitive τύπους, μπορούν να χρησιμοποιηθούν οι αντίστοιχες κλάσεις-περιτυλίγματα (Boolean, Byte, Short, Integer, Long, Float, Double) για την επεξεργασία τιμών NULL.

Η αντιστοίχιση κατά την εγκατάσταση δεδομένων (στο PreparedStatement): γενικά, χρησιμοποιείται η αντίστροφη αντιστοίχιση, αλλά υπάρχουν εξαιρέσεις και προτιμήσεις. Για παράδειγμα, για DECIMAL είναι καλύτερο να χρησιμοποιείτε BigDecimal.

Παράδειγμα χρήσης:

// Μέθοδος λήψης δεδομένων από το ResultSet
public String getStringValue(ResultSet rs, String columnName) throws SQLException {
    // Λήψη string τιμής από τη στήλη
    return rs.getString(columnName);
}

// Μέθοδος ρύθμισης παραμέτρου στο PreparedStatement
public void setIntValue(PreparedStatement ps, int parameterIndex, int value) throws SQLException {
    // Ρύθμιση ακέραιας τιμής
    ps.setInt(parameterIndex, value);
}