Java-Datenbankkonnektivität

Sie kennen die Grundlagen von SQL. Das ist gut. Aber heute werden Sie sich noch besser fühlen. Heute lernen Sie, wie man mit einer Datenbank aus einer Java-Anwendung heraus arbeitet.

Da es viele verschiedene DBMS gibt, haben die Entwickler von Java beschlossen, die Funktionsweise einer Java-Anwendung mit Datenbanken zu standardisieren. Und sie nannten diesen Standard JDBC : Java DataBase Connectivity .

JDBC verfügt über drei Hauptschnittstellen:

  • Verbindung – verantwortlich für die Verbindung zur Datenbank
  • Anweisung – verantwortlich für die Abfrage der Datenbank
  • ResultSet – verantwortlich für das Ergebnis der Abfrage an die Datenbank

Eigentlich ist das alles. Und wir werden nicht einmal alle Methoden aller Schnittstellen lernen. Nur Arbeitsbeispiele, die wir nach und nach verkomplizieren werden.

JDBC ähnelt in gewisser Weise der Arbeit mit Servlets. Die Entwickler von JDBC haben mehrere Schnittstellen geschrieben und nennen sie stolz die Java DataBase API. Und die Implementierung dieser Schnittstellen wurde ... den Erstellern des DBMS übertragen. Wie es dort umgesetzt wird, interessiert niemanden. Funktioniert gut.

Es gibt vier Versionen von JDBC und wir werden uns die neueste ansehen. Und das nicht, weil sie die Coolste ist, sondern weil sie die Einfachste ist.

JDBC-Treibermanager

Die Java-Anwendung und die Datenbank kommunizieren über eine Bibliothek namens JDBC-Treiber miteinander. Dabei handelt es sich um eine Reihe von Klassen, die die JDBC-API für ein bestimmtes DBMS implementieren.

Der richtige JDBC-Treiber wird mithilfe einer Klasse namens DriverManager ausgewählt . Ihr Zusammenspiel lässt sich wie folgt darstellen:

Die Sache ist, Sie können In-Memory-DB, No-SQL-DB oder sogar eine in eine Android-App integrierte Datenbank verwenden. Als Java-Entwickler interessieren Sie diese Nuancen überhaupt nicht. Der Treibermanager wählt den richtigen JDBC-Treiber für Sie aus und alles funktioniert wie am Schnürchen.

Übrigens, wie macht er das?

Verbindung zum MySQL-Server herstellen

Erinnern Sie sich, was Sie brauchten, um über MySQL Workbench eine Verbindung zu einem lokalen SQL-Server herzustellen? Falls ich es vergessen habe, erinnere ich Sie daran, dass Sie drei Dinge brauchten:

  • Gastgeber
  • Anmeldung
  • Passwort

Mit Login und Passwort ist alles klar, und Host ist, wenn Sie sich erinnern, der Name des Computers, auf dem sich der Server befindet. Wenn es sich auf Ihrem lokalen Computer befindet, müssen Sie localhost als Hostnamen angeben. Was ist, wenn es nicht lokal ist?

Dann müssen Sie ... URL verwenden. URL steht für Universal Resource Locator . Es kann verwendet werden, um den Standort von allem im Netzwerk anzugeben: einer Site, einem Drucker, einem SQL-Server. Tatsächlich wird die URL auch für den Zugriff auf den lokalen SQL-Server verwendet. Es sieht ungefähr so ​​aus:

mysql://localhost:3306/db_scheme
  • MySQL ist ein Serverprotokoll
  • localhost – Hostname im Netzwerk
  • 3306 – Port, an dem Anfragen gestellt werden
  • db_scheme – Schemaname (Datenbankname)

Notiz. Der Datenbankname kann weggelassen werden. Wenn der Server jedoch viele Datenbankschemata speichert, werden für diese in der Regel unterschiedliche Benutzer und unterschiedliche Zugriffsrechte erstellt. Und wenn der Benutzer, unter dem Sie sich am SQL-Server anmelden, nicht Zugriff auf alle Datenbanken hat, müssen Sie unbedingt den Namen der spezifischen Datenbank angeben, auf die Sie Zugriff haben.

Am Ende dieser URL können verschiedene Parameter, Codierungstypen und Zeitzonen stehen, die als Parameter für die neue Datenbankverbindung gelten, die hergestellt wird.

Das Protokoll kann auch zusammengesetzt sein. Wenn die gesamte Kommunikation mit dem Datenbankserver über einen verschlüsselten Kanal mit dem SSH-Protokoll erfolgt, kann die URL wie folgt angegeben werden:

ssh:mysql://localhost:3306/db_scheme

Ein Protokoll ist nicht unbedingt ein externes Programm. Wenn Sie beispielsweise mit einem Server arbeiten, der das JNDI-Protokoll verwendet, können Sie dies wie folgt angeben:

jndi:mysql://localhost:3306/db_scheme

Und wenn Sie mit dem JDBC-API-Protokoll arbeiten möchten, müssen Sie so schreiben:

jdbc:mysql://localhost:3306/db_scheme

Wenn Sie versuchen, eine Datenbankverbindung herzustellen, analysiert der JDBC-Treibermanager Ihre SQL-Datenbank-URL und ermittelt den Namen des JDBC-Treibers anhand des Protokollnamens. Hier ist so ein kleiner Trick.