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

Podcast: „Die Zero Trust-Architektur ist gekommen, um zu bleiben“

Unternehmen greifen von überall aus auf die Cloud und Applikationen zu. Dementsprechend reicht das Burg-Prinzip…

5 Tagen ago

Google schließt weitere Zero-Day-Lücke in Chrome

Hacker nutzen eine jetzt gepatchte Schwachstelle im Google-Browser bereits aktiv aus. Die neue Chrome-Version stopft…

5 Tagen ago

Hacker greifen Zero-Day-Lücke in Windows mit Banking-Trojaner QakBot an

Microsoft bietet seit Anfang der Woche einen Patch für die Lücke. Kaspersky-Forscher gehen davon aus,…

5 Tagen ago

Adobe schließt neun kritische Lücken in Reader und Acrobat

Das jüngste Update bringt insgesamt zwölf Fixes. Schadcode lässt sich unter Umständen ohne Interaktion mit…

6 Tagen ago

Fabrikautomatisierung: Siemens integriert SPS-Ebene

Eine softwarebasierte Workstation soll es Ingenieuren erlauben, sämtliche Steuerungen zentral zu verwalten. Pilotkunde ist Ford.

6 Tagen ago

Ebury-Botnet infiziert 400.000 Linux-Server weltweit

Kryptodiebstahl und finanzieller Gewinn sind laut ESET-Forschungsbericht die vorrangigen neuen Ziele.

6 Tagen ago