Java Database-connectiviteit

Je kent de basis van SQL. Dit is goed. Maar vandaag zul je je nog beter voelen. Vandaag ga je leren werken met een database vanuit een Java-applicatie.

Er zijn veel verschillende DBMS, dus besloten de makers van Java om te standaardiseren hoe een Java-applicatie werkt met databases. En ze noemden deze standaard JDBC : Java DataBase Connectivity .

JDBC heeft 3 hoofdinterfaces:

  • Verbinding - verantwoordelijk voor het verbinden met de database
  • Verklaring - verantwoordelijk voor het doorzoeken van de database
  • ResultSet - verantwoordelijk voor het resultaat van de query naar de database

Dat is eigenlijk alles. En we zullen niet eens alle methoden van alle interfaces leren. Alleen werkende voorbeelden, die we geleidelijk zullen compliceren.

JDBC lijkt enigszins op het werken met servlets. De makers van JDBC hebben verschillende interfaces geschreven en noemen het met trots de Java DataBase API. En de implementatie van deze interfaces werd toegewezen aan ... de makers van het DBMS. Hoe het daar wordt geïmplementeerd - het kan niemand iets schelen. Werkt prima.

Er zijn vier versies van JDBC en we zullen naar de laatste kijken. En niet omdat ze de coolste is, maar omdat ze de eenvoudigste is.

JDBC-stuurprogrammabeheer

De Java-toepassing en de database communiceren met elkaar via een bibliotheek die de JDBC-driver wordt genoemd. Dit is een set klassen die de JDBC-API voor een bepaald DBMS implementeren.

Het juiste JDBC-stuurprogramma wordt geselecteerd met behulp van een klasse genaamd DriverManager . Hun interactie kan als volgt worden weergegeven:

Het punt is dat je In-Memory-DB, No-SQL-DB of zelfs een database kunt gebruiken die is ingebouwd in een Android-app. Deze nuances gaan u als Java-ontwikkelaar helemaal niet aan. De Driver Manager selecteert de juiste JDBC-driver voor u en alles werkt op rolletjes.

Trouwens, hoe doet hij het?

Verbinding maken met de MySQL-server

Weet je nog wat je nodig had om verbinding te maken met een lokale SQL-server via MySQL Workbench? Als ik het vergeten ben, herinner ik je eraan dat je drie dingen nodig had:

  • gastheer
  • Log in
  • wachtwoord

Alles is duidelijk met de login en het wachtwoord, en host, als je het je herinnert, is de naam van de computer waarop de server zich bevindt. Als het zich op uw lokale computer bevindt, moet u localhost opgeven als de hostnaam. Wat als het niet lokaal is?

Dan moet u ... URL gebruiken. URL staat voor Universal Resource Locator . Het kan worden gebruikt om de locatie van alles op het netwerk te specificeren: een site, een printer, een SQL-server. In feite wordt de URL ook gebruikt om toegang te krijgen tot de lokale SQL-server. Het ziet er ongeveer zo uit:

mysql://localhost:3306/db_scheme
  • mysql is een serverprotocol
  • localhost - hostnaam op het netwerk
  • 3306 - poort waarop verzoeken worden gedaan
  • db_scheme - schemanaam (databasenaam)

Opmerking. De databasenaam kan worden weggelaten. Maar als de server veel databaseschema's opslaat, worden er meestal verschillende gebruikers en verschillende toegangsrechten voor gemaakt. En als de gebruiker waaronder je inlogt op de SQL-server niet toegang heeft tot alle databases, dan moet je zeker de naam opgeven van de specifieke database waartoe je toegang hebt.

Aan het einde van deze URL kunnen verschillende parameters, coderingstypen en tijdzones staan, die worden beschouwd als parameters voor de nieuwe databaseverbinding die tot stand wordt gebracht.

Het protocol kan ook samengesteld zijn. Als alle communicatie met de databaseserver verloopt via een versleuteld kanaal dat gebruikmaakt van het SSH-protocol, kan de URL als volgt worden opgegeven:

ssh:mysql://localhost:3306/db_scheme

Een protocol is niet noodzakelijkerwijs een extern programma. Als u bijvoorbeeld met een server werkt die het JNDI-protocol gebruikt, kunt u dit als volgt specificeren:

jndi:mysql://localhost:3306/db_scheme

En als je met het JDBC API-protocol wilt werken, moet je zo schrijven:

jdbc:mysql://localhost:3306/db_scheme

Wanneer u een databaseverbinding probeert te maken, analyseert JDBC Driver Manager uw SQL-db-URL en bepaalt de naam van het JDBC-stuurprogramma op basis van de protocolnaam. Hier is zo'n kleine truc.