Spisie treści
Jawa Jako język wielofunkcyjny, oprócz różnych funkcji, które możemy osiągnąć, pozwala nam również pracować z trwałością danych, w tym celu możemy nawiązać połączenie z różnymi silnikami Bazy danych które istnieją na rynku.A Baza danych Może to być coś tak prostego, jak system klucz-wartość w zwykłym pliku tekstowym, a także bardziej złożone i nowoczesne rozwiązania, takie jak nierelacyjne, co sprawia, że możliwość opracowania różnych schematów połączeń jest obowiązkową funkcją.
JDBC to zestaw klas, które pozwalają Jawa nawiązywać połączenia z silnikami bazodanowymi, dzięki temu możemy uzyskać wyniki zapytań w obiekcie o nazwie Zestaw wyników.
Ponieważ każdy silnik jest inny, prawdopodobnie Zestaw wyników to, co otrzymujemy, jest dla niego specyficzne, dlatego nie jest dla nas wygodne budowanie naszej aplikacji wokół tego obiektu.
Aby rozwiązać ten problem, możemy użyć tak zwanej a dostęp do obiektu, za pomocą którego możemy zarządzać różnymi formami naszego Zestaw wyników dzięki czemu Twoja aplikacja w naszym programie jest łatwiejsza do wdrożenia, a tym samym deweloper ma mniej problemów.
Wzorzec projektowy DAOten Obiekt dostępu do danych lub DAO Jest to wzorzec projektowy, który zbiera to, co wyjaśnialiśmy w poprzednim punkcie, wymaga to od nas stworzenia klasy dostępu do właściwości naszego Baza danych. Aby to zadziałało, musimy wykonać całą pracę JDBC i kontrolera, który pozwala nam połączyć się z konkretnym silnikiem, który chcemy, dodatkowo musimy przeprowadzić logiczną implementację, którą wyjaśniamy, aby uniknąć zależności od konkretnych komponentów, które tylko utrudniłyby nam migrację do innego silnika bazy danych.
Pierwszą rzeczą, którą musimy zrobić, aby zbudować połączenie JDBC jest zidentyfikowanie z jakim silnikiem chcemy nawiązać połączenie, a następnie pobranie niezbędnych klas dla tego połączenia, w tym przypadku zamierzamy nawiązać połączenie MySQL, ten silnik jest lekki, darmowy i wieloplatformowy, więc możemy go zainstalować zarówno w Windows, Linux lub Mac.
Złącze / J to zestaw zajęć oferowanych przez zespół programistów MySQL, z nimi możemy zrobić JDBC współpracuj z tym Bazy danych relacyjny, aby włączyć go do naszego projektu, musimy wykonać następujące kroki.
1- Musimy też pobrać plik odpowiadający naszej platformie Okna lub dla innych z oficjalnej strony internetowej MySQL W poniższym linku.
POWIĘKSZAĆ
3- Teraz przystąpimy do testowania, czy wszystko działa poprawnie na naszym komputerze, w tym celu zrobimy mały kod, w którym zobaczymy, czy złącze / J został pomyślnie załadowany do naszego systemu, w tym celu użyjemy następującego kodu:
public class ConnectionTest {public static void main (String [] args) {spróbuj {Class c = Class.forName ("com.mysql.jdbc.Driver"); System.out.println ("Załadowana klasa:" + c.getName ()); } catch (ClassNotFoundException ex) {System.err.println (ex); }}}
4- Aby uruchomić ten przykład musimy uwzględnić zależność, zalecane jest posiadanie .słoik w tej samej ścieżce naszego pliku TestConexion.java. Po omówieniu tego przejdziemy do skompilowania naszego pliku, otworzymy konsolę i z instrukcją javac i dodając .słoik do ścieżka klasy w czasie wykonywania poleceniem -cp Możemy to zrobić, zobaczmy wiersz poleceń:
javac -cp mysql-connector-java-5.1.34-bin.jar Test połączenia.java
5- Na koniec, aby wykonać nasz plik, wystarczy wykonać następującą instrukcję:
java -cp mysql-connector-java-5.1.34-bin.jar TestConnection
Jeśli mamy w konsoli wynik podobny do poniższego, możemy rozpocząć pracę z operacjami, aby Bazy danych:
POWIĘKSZAĆ
UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE `użytkownicy` (
`id` bigint (20) NOT NULL AUTO_INCREMENT,
`name` varchar (255) NOT NULL,
`data` data NIE NULL,
`stan` int (11) NIE NULL,
KLUCZ GŁÓWNY ('id')
) SILNIK = DOMYŚLNY ZESTAW ZNAKÓW InnoDB = latin1 AUTO_INCREMENT = 3;
INSERT IN TO `users` (`id`, `name`,` date`, `status`) WARTOŚCI
(1, 'Użytkownik 1', '2015-01-01', 1),
(2, „Użytkownik 2”, „01.01.2015”, 1);
Teraz w następującym kodzie Jawa skupimy się na nawiązaniu połączenia z Baza danych, do tego z spróbuj złapać blok Sprawdzimy, że jest skuteczne i bez błędów, następnie jeśli połączenie zostało nawiązane, wypiszemy komunikat o powodzeniu, zobaczmy:
import java.sql.Połączenie; import java.sql.DriverManager; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost"; private static final String user = "nasz użytkownik"; private static final String password = "nasze hasło"; public static void main (String [] args) {spróbuj {Connection con = DriverManager.getConnection (ścieżka, użytkownik, hasło); System.out.println ("Połączenie powiodło się"); } catch (wyjątek e) {e.printStackTrace (); }}}
Z tego kodu widać, że musimy zaimportować dwie biblioteki z pakietu java.sql, Jeden jest Połączenie który jest odpowiedzialny za zarządzanie wszystkimi działaniami, aby móc komunikować się z bazą danych, a drugi to Menadżer urządzeń który odpowiada za zapewnienie sposobu, w jaki będziemy się z nim komunikować. Jeśli poprawnie wykonaliśmy kroki, po uruchomieniu naszego przykładu w konsoli powinien pojawić się następujący komunikat:
POWIĘKSZAĆ
import java.sql.Połączenie; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Oświadczenie; public class ConnectionTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "nasz użytkownik"; private static final String password = "nasze hasło"; public static void main (String [] args) {spróbuj {Connection con = DriverManager.getConnection (ścieżka, użytkownik, hasło); Zapytanie o instrukcję = con.createStatement (); System.out.println ("Połączenie powiodło się"); Wynik zestawu wyników = query.executeQuery ("SELECT * FROM users"); while (result.next()) {String name = result.getString ("nazwa"); Data ciągu = wynik.getString („data”); System.out.println („Nazwa:” + nazwa + „Data nagrania:” + data); } wynik.zamknij (); zapytanie.zamknij (); con.zamknij (); } catch (wyjątek e) {e.printStackTrace (); }}}
Warto wspomnieć, że w naszym atrybucie trasa Zmodyfikowaliśmy go i nazwę Baza danych połączenie test gdzie musimy mieć utworzoną tabelę naszych użytkowników, skompilować nasz plik i wykonać, wynik na konsoli będzie taki, jak na poniższym obrazku:
POWIĘKSZAĆ
KorzyśćMa to kilka zalet, jak już powiedzieliśmy, pierwszą jest możliwość użycia czegoś bez powtarzania tego, ale jest to również dla bezpieczeństwa, ponieważ pozwala nam to traktować wartości, które mogą pochodzić z danych wejściowych użytkownika, aby uniknąć ataku na nasze Bazę danych oprócz tego możemy również ułatwić czytelność naszego programu.
W poniższym przykładzie stworzymy zapytanie z Przygotowane oświadczenie, dzięki czemu może być użyty kilka razy podczas naszego programu. Zobaczmy wynikowy kod:
import java.sql.Połączenie; import java.sql.DriverManager; import java.sql.ResultSet; importuj java.sql.PreparedStatement; public class PreparedStatementTest {private static final String path = "jdbc: mysql: // localhost / test"; private static final String user = "nasz użytkownik"; private static final String password = "nasze hasło"; public static void main (String [] args) {spróbuj {Connection con = DriverManager.getConnection (ścieżka, użytkownik, hasło); Zapytanie PreparedStatement = con.prepareStatement ("SELECT * FROM users Gdzie id =?;"); System.out.println ("Połączenie powiodło się"); zapytanie.setInt (1, 1); Wynik zestawu wyników = query.executeQuery (); while (result.next()) {String name = result.getString ("nazwa"); Data ciągu = wynik.getString („data”); System.out.println („Nazwa:” + nazwa + „Data nagrania:” + data); } wynik.zamknij (); zapytanie.zamknij (); con.zamknij (); } catch (wyjątek e) {e.printStackTrace (); }}}
Zauważamy, że stosując metodę setInt Za pomocą obiektu zapytania możemy przekazać niezbędny parametr dla zapytania, dzięki temu możemy odłączyć go od wykonania zapytania, zyskując tym samym przenośność i łatwość czytania. Na koniec kompilujemy i uruchamiamy nasz program:
POWIĘKSZAĆ