Łączność z bazą danych Java

Znasz podstawy SQL. To jest dobre. Ale dzisiaj poczujesz się jeszcze lepiej. Dzisiaj zaczniesz uczyć się pracy z bazą danych z poziomu aplikacji Java.

Istnieje wiele różnych systemów DBMS, więc twórcy Javy postanowili ujednolicić sposób, w jaki aplikacja Java współpracuje z bazami danych. I nazwali ten standard - JDBC : Java DataBase Connectivity .

JDBC ma 3 główne interfejsy:

  • Połączenie - odpowiada za połączenie z bazą danych
  • Instrukcja - odpowiedzialna za odpytywanie bazy danych
  • ResultSet – odpowiada za wynik zapytania do bazy danych

Właściwie to wszystko. I nawet nie nauczymy się wszystkich metod wszystkich interfejsów. Tylko działające przykłady, które będziemy stopniowo komplikować.

JDBC jest nieco podobny do pracy z serwletami. Twórcy JDBC napisali kilka interfejsów i z dumą nazywają to Java DataBase API. A implementację tych interfejsów powierzono… twórcom DBMS. Jak to jest tam realizowane - nikogo to nie obchodzi. Działa w porządku.

Istnieją cztery wersje JDBC, a my przyjrzymy się najnowszej. I to nie dlatego, że jest najfajniejsza, ale dlatego, że jest najprostsza.

Menedżer sterowników JDBC

Aplikacja Java i baza danych komunikują się ze sobą za pośrednictwem biblioteki zwanej sterownikiem JDBC. Jest to zestaw klas, które implementują API JDBC dla konkretnego DBMS.

Właściwy sterownik JDBC jest wybierany przy użyciu klasy o nazwie DriverManager . Ich interakcję można przedstawić w następujący sposób:

Chodzi o to, że możesz użyć In-Memory-DB, No-SQL-DB, a nawet bazy danych wbudowanej w aplikację na Androida. Jako programisty Java te niuanse w ogóle Cię nie dotyczą. Menedżer sterowników wybierze odpowiedni sterownik JDBC i wszystko będzie działać jak w zegarku.

Swoją drogą, jak on to robi?

Łączenie z serwerem MySQL

Pamiętasz, co było potrzebne do połączenia się z lokalnym serwerem SQL za pośrednictwem MySQL Workbench? Jeśli zapomniałem, to przypominam, potrzebne były trzy rzeczy:

  • gospodarz
  • Zaloguj sie
  • hasło

Z loginem i hasłem wszystko jest jasne, a host, jeśli pamiętasz, to nazwa komputera, na którym znajduje się serwer. Jeśli znajduje się na komputerze lokalnym, jako nazwę hosta należy podać localhost. A co jeśli nie jest lokalny?

Następnie musisz użyć ... URL. URL oznacza Universal Resource Locator . Można go użyć do określenia lokalizacji czegokolwiek w sieci: witryny, drukarki, serwera SQL. W rzeczywistości adres URL jest również używany do uzyskiwania dostępu do lokalnego serwera SQL. Wygląda to mniej więcej tak:

mysql://localhost:3306/db_scheme
  • mysql to protokół serwera
  • localhost - nazwa hosta w sieci
  • 3306 - port, na którym wykonywane są żądania
  • db_scheme - nazwa schematu (nazwa bazy danych)

Notatka. Nazwę bazy danych można pominąć. Ale jeśli serwer przechowuje wiele schematów baz danych, to zazwyczaj tworzy się dla nich różnych użytkowników i różne prawa dostępu. A jeśli użytkownik, pod którym logujesz się do serwera SQL, nie ma dostępu do wszystkich baz danych, to koniecznie musisz podać nazwę konkretnej bazy, do której masz dostęp.

Na końcu tego adresu URL mogą znajdować się różne parametry, typy kodowania, strefa czasowa, które są uważane za parametry nawiązywania nowego połączenia z bazą danych.

Ponadto protokół może być złożony. Jeśli cała komunikacja z serwerem bazy danych odbywa się za pośrednictwem zaszyfrowanego kanału przy użyciu protokołu SSH, adres URL można określić w następujący sposób:

ssh:mysql://localhost:3306/db_scheme

Protokół niekoniecznie jest programem zewnętrznym. Na przykład, jeśli pracujesz z serwerem korzystającym z protokołu JNDI, możesz określić go w następujący sposób:

jndi:mysql://localhost:3306/db_scheme

A jeśli chcesz pracować przy użyciu protokołu API JDBC, musisz napisać tak:

jdbc:mysql://localhost:3306/db_scheme

Podczas próby utworzenia połączenia z bazą danych Menedżer sterowników JDBC analizuje adres URL bazy danych SQL i określa nazwę sterownika JDBC na podstawie nazwy protokołu. Oto taka mała sztuczka.