Implementierung von DbUtils

Wie der Name schon sagt, verarbeiten Implementierungen dieser Schnittstelle ein java.sql.ResultSet und können Daten in jede beliebige Form konvertieren und verändern, die für die Anwendung benötigt wird oder einfacher zu handhaben ist. Diese Komponente stellt die Implementierungen von ArrayHandler, ArrayListHandler, BeanHandler, BeanListHandler, MapHandler, MapListHandler und ScalarHandler bereit.

Das ResultSetHandler-Interface bietet eine einzige Methode: Object handle(java.sql.ResultSet rs). Somit übernimmt jede ResultSetHandler-Implementierung ein ResultSet als Eingabe, verarbeitet diese und gibt ein Objekt zurück. Da der Rückgabetyp java.lang.Object ist, besteht abgesehen davon, dass keine primitiven Java-Datentypen zurückgegeben werden können, keinerlei Einschränkung der Rückgabe. Sollte keine der genannten sieben Implementierungen die jeweiligen Anforderungen erfüllen, kann man immer noch seine eigene Implementierung schreiben und verwenden.

QueryRunner

Diese Klasse vereinfacht die Ausführung von SQL-Abfragen. Sie übernimmt viele der hiermit verbundenen grundlegenden Abläufe und kann in Kombination mit dem ResultSetHandler den erforderlichen Code erheblich verkürzen. Die QueryRunner-Klasse liefert zwei Konstruktoren. Einer davon ist leer, der andere verwendet eine javax.sql.DataSource als Parameter. In Fällen, in denen keine Datenbank-Verbindung als Parameter für eine Methode bereitgestellt werden muss, wird die dem Konstruktor zugewiesene DataSource dazu verwendet, eine neue Verbindung abzurufen und fortzufahren.

Zu den wichtigen Methoden dieser Klasse zählen die folgenden:

  • query(Connection conn, String sql, Object[] params, ResultSetHandler rsh): Diese Methode führt eine select-Abfrage aus, in der die Werte im Object-Array als Ersatzparameter für die Abfrage eingesetzt werden. Die Methode verarbeitet intern das Erstellen und Schließen von einem PreparedStatement und dem ResultSet. Der ResultSetHandler ist für die Konvertierung der Daten aus dem ResultSet in ein einfacheres oder für die jeweilige Anwendung besser geeignetes Format verantwortlich.
  • query(String sql, Object[] params, ResultSetHandler rsh): Ähnelt stark der ersten Methode – der einzige Unterschied besteht darin, dass die Verbindung nicht für die Methode bereitgestellt wird, sondern aus der mithilfe der setDataSource-Methode an den Konstruktor oder das Set zugewiesenen DataSource entnommen wird.
  • query(Connection conn, String sql, ResultSetHandler rsh): Führt eine select-Abfrage durch, die keine Parameter erwartet.
  • update(Connection conn, String sql, Object[] params): Diese Methode wird verwendet, um eine Insert-, Update- oder Delete-Anweisung auszuführen. Das Object-Array beinhaltet die Ersatzparameter für die Anweisung.

Hier ein Beispiel, in dem Daten aus einer Datenbank abgerufen werden. In dem Beispiel wird eine MySQL-Datenbank verwendet. Außerdem muss der MySQL JDBC-Treiber heruntergeladen werden. Die verwendete MySQL-Datenbank wird auf Port 3306 des lokalen Hosts ausgeführt. Der Datenbankname lautet test. Die verwendete Student-Tabelle weist die folgende Struktur auf:

Columns    Type
——-    —-
StudId     int
Name      varchar

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Bedrohungen in Europa: Schwachstellen in der Lieferkette dominieren

Hinter 84 Prozent der Zwischenfälle bei Herstellern stecken Schwachstellen in der Lieferkette. Auf dem Vormarsch…

6 Tagen ago

Bericht: Apple arbeitet an faltbarem iPad

Es kommt angeblich 2028 auf den Markt. Das aufgeklappte Gerät soll die Displayfläche von zwei…

6 Tagen ago

HPE baut Supercomputer am Leibniz-Rechenzentrum

Das System basiert auf Hardware von HPE-Cray und Nvidia. Die Inbetriebnahme erfolgt 2027.

6 Tagen ago

Bund meldet Fortschritte in der Netzversorgung

Die Bundesnetzagentur hat ihr Gigabit-Grundbuch aktualisiert. Drei von vier Haushalten sollen jetzt Zugang zu Breitbandanschlüssen…

7 Tagen ago

Vorinstallierte Schadsoftware auf IoT-Geräten

Mit dem Internet verbundene Digitale Bilderrahmen oder Mediaplayer können mit Schadsoftware infiziert werden und sind…

1 Woche ago

iOS und iPadOS 18.2 beseitigen 21 Sicherheitslücken

Schädliche Apps können unter Umständen einen Systemabsturz auslösen. Mindestens eine Anfälligkeit erlaubt eine Remotecodeausführung.

1 Woche ago