Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


18.3.3

Datum und Zeit


Es herrscht oft große Verwirrung bei der Verwendung temporaler Typen in Java und JDBC. Das liegt zum einen an den verschiedenen Typen, die in der Datenbank für die Darstellung von Datum und Zeitangaben zur Verfügung stehen, aber auch an den Typen, die Java hierfür anbietet.

Java selbst stellt zum Umgang mit Datum und Zeit folgende Klassen bereit: Die Klasse java.util.Date besitzt zwar Methoden für die Umrechnung der Zeit in Kalendertage, diese stammen jedoch noch vom JDK 1.0 und sollten in neueren Anwendungen nicht benutzt werden, da sie über keinen Mechanismus zur Unterstützung von Kalender-Systemen verschiedener Nationalitäten verfügen. Im folgenden Beispiel wird ein Calender-Exemplar mit dem aktuellen Datum initialisiert und anschließend werden über die get()-Methode die spezifischen Daten extrahiert:
  Calendar cal = Calendar.getInstance();
  cal.setTime(new java.util.Date());
  cal.get(Calendar.DAY_OF_MONTH);
Mit der Einführung von JDBC wurden folgende Typen eingeführt: Alle diese Klassen sind von java.util.Date abgeleitet und blenden jeweils die nicht benötigte Information aus. So enthalten z. B. Exemplare der Klasse java.sql.Date als Zeit immer den Wert 0.

Bei der Abfrage von temporalen Typen aus der Datenbank werden vom JDBC-Treiber immer Exemplare der entsprechenden Klassen aus dem Paket java.sql zurückgeliefert. Da sie alle von java.util.Date abgeleitet sind, kann man sie anschließend in der Client-Anwendung wie herkömmliche Exemplare dieser übergeordneten Klasse verwenden.

Bei der Speicherung temporaler Typen muss man allerdings beachten, dass diese Typen als Parameter nur mit vorbereiteten SQL-Anweisungen direkt gesetzt werden können. Exemplare vom Typ java.util.Date, die in der Anwendung erzeugt wurden, müssen vor der Speicherung in den entsprechenden temporalen Typ im Paket java.sql umgewandelt werden, wie folgendes Beispiel zeigt:
  Date d = new Date();
  ...
  PreparedStatement prep;
  ...
  prep.setTimestamp(1, new java.sql.Date(d.getTime());


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.