JDBC - Połączenia z bazą danych

Po zainstalowaniu odpowiedniego sterownika nadszedł czas na nawiązanie połączenia z bazą danych za pomocą JDBC.

Programowanie związane z ustanowieniem połączenia JDBC jest dość proste. Oto te proste cztery kroki -

  • Import JDBC Packages: Dodaj import instrukcji do programu Java w celu zaimportowania wymaganych klas w kodzie Java.

  • Register JDBC Driver: Ten krok powoduje, że JVM ładuje żądaną implementację sterownika do pamięci, aby mogła realizować żądania JDBC.

  • Database URL Formulation: Ma to na celu utworzenie odpowiednio sformatowanego adresu wskazującego bazę danych, z którą chcesz się połączyć.

  • Create Connection Object:Na koniec zakoduj wywołanie metody getConnection () obiektu DriverManager w celu ustanowienia rzeczywistego połączenia z bazą danych.

Importuj pakiety JDBC

Plik Import Instrukcje informują kompilator Javy, gdzie znaleźć klasy, do których się odwołujesz w kodzie i są umieszczane na samym początku kodu źródłowego.

Aby skorzystać ze standardowego pakietu JDBC, który umożliwia wybieranie, wstawianie, aktualizowanie i usuwanie danych w tabelach SQL, dodaj następujące importy do kodu źródłowego -

import java.sql.* ;  // for standard JDBC programs
import java.math.* ; // for BigDecimal and BigInteger support

Zarejestruj sterownik JDBC

Musisz zarejestrować sterownik w swoim programie, zanim go użyjesz. Rejestracja sterownika to proces, w którym plik klasy sterownika Oracle jest ładowany do pamięci, dzięki czemu można go wykorzystać jako implementację interfejsów JDBC.

Musisz dokonać tej rejestracji tylko raz w swoim programie. Możesz zarejestrować kierowcę na dwa sposoby.

Podejście I - Class.forName ()

Najpopularniejszym podejściem do rejestracji sterownika jest użycie języka Java Class.forName()metody, aby dynamicznie załadować plik klasy sterownika do pamięci, która automatycznie go rejestruje. Ta metoda jest preferowana, ponieważ umożliwia skonfigurowanie i przenoszenie rejestracji sterownika.

Poniższy przykład używa Class.forName () do zarejestrowania sterownika Oracle -

try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Możesz użyć getInstance() metody, aby obejść niezgodne maszyny JVM, ale wtedy będziesz musiał zakodować dwa dodatkowe wyjątki w następujący sposób -

try {
   Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
catch(IllegalAccessException ex) {
   System.out.println("Error: access problem while loading!");
   System.exit(2);
catch(InstantiationException ex) {
   System.out.println("Error: unable to instantiate driver!");
   System.exit(3);
}

Podejście II - DriverManager.registerDriver ()

Drugim podejściem, którego możesz użyć do zarejestrowania sterownika, jest użycie statycznej DriverManager.registerDriver() metoda.

Jeśli używasz maszyny JVM niezgodnej z JDK, takiej jak dostarczona przez firmę Microsoft, należy użyć metody registerDriver () .

Poniższy przykład używa registerDriver () do zarejestrowania sterownika Oracle -

try {
   Driver myDriver = new oracle.jdbc.driver.OracleDriver();
   DriverManager.registerDriver( myDriver );
}
catch(ClassNotFoundException ex) {
   System.out.println("Error: unable to load driver class!");
   System.exit(1);
}

Formułowanie adresu URL bazy danych

Po załadowaniu sterownika możesz nawiązać połączenie za pomocą rozszerzenia DriverManager.getConnection()metoda. Dla ułatwienia przedstawię trzy przeciążone metody DriverManager.getConnection () -

  • getConnection (adres URL ciągu)

  • getConnection (adres URL ciągu, właściwość właściwości)

  • getConnection (String url, String user, String password)

Tutaj każdy formularz wymaga bazy danych URL. Adres URL bazy danych to adres wskazujący Twoją bazę danych.

Sformułowanie adresu URL bazy danych jest miejscem, w którym występuje większość problemów związanych z nawiązaniem połączenia.

Poniższa tabela zawiera listę popularnych nazw sterowników JDBC i adresu URL bazy danych.

RDBMS Nazwa sterownika JDBC Format adresu URL
MySQL com.mysql.jdbc.Driver jdbc:mysql://nazwa_hosta / nazwa_bazy_danych
WYROCZNIA oracle.jdbc.driver.OracleDriver jdbc:oracle:thin:@nazwa hosta: numer portu: nazwa_bazy_danych
DB2 COM.ibm.db2.jdbc.net.DB2Driver jdbc:db2:nazwa hosta: numer portu / nazwa bazy danych
Sybase com.sybase.jdbc.SybDriver jdbc:sybase:Tds:nazwa hosta: numer portu / nazwa bazy danych

Cała podświetlona część w formacie adresu URL jest statyczna i musisz zmienić tylko pozostałą część zgodnie z konfiguracją bazy danych.

Utwórz obiekt połączenia

Wymieniliśmy trzy formy DriverManager.getConnection() metoda tworzenia obiektu połączenia.

Korzystanie z adresu URL bazy danych z nazwą użytkownika i hasłem

Najczęściej używana forma getConnection () wymaga podania adresu URL bazy danych, nazwy użytkownika i hasła :

Zakładając, że używasz Oracle thin sterownik, należy określić host: port: databaseName wartość dla części adresu URL zawierającej bazę danych.

Jeśli masz hosta pod adresem TCP / IP 192.0.0.1 z nazwą hosta amrood, a Twój odbiornik Oracle jest skonfigurowany do nasłuchiwania na porcie 1521, a nazwa Twojej bazy danych to EMP, wówczas pełny adres URL bazy danych będzie wyglądał następująco:

jdbc:oracle:thin:@amrood:1521:EMP

Teraz musisz wywołać metodę getConnection () z odpowiednią nazwą użytkownika i hasłem, aby uzyskać plik Connection obiekt w następujący sposób -

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
String USER = "username";
String PASS = "password"
Connection conn = DriverManager.getConnection(URL, USER, PASS);

Korzystanie tylko z adresu URL bazy danych

Druga forma metody DriverManager.getConnection () wymaga tylko adresu URL bazy danych -

DriverManager.getConnection(String url);

Jednak w tym przypadku adres URL bazy danych zawiera nazwę użytkownika i hasło i ma następującą ogólną postać -

jdbc:oracle:driver:username/password@database

Tak więc powyższe połączenie można utworzyć w następujący sposób -

String URL = "jdbc:oracle:thin:username/password@amrood:1521:EMP";
Connection conn = DriverManager.getConnection(URL);

Korzystanie z adresu URL bazy danych i obiektu Properties

Trzecia forma metody DriverManager.getConnection () wymaga adresu URL bazy danych i obiektu Właściwości -

DriverManager.getConnection(String url, Properties info);

Obiekt Properties zawiera zestaw par słowo kluczowe-wartość. Służy do przekazywania właściwości sterownika do sterownika podczas wywołania metody getConnection ().

Aby wykonać to samo połączenie wykonane w poprzednich przykładach, użyj następującego kodu -

import java.util.*;

String URL = "jdbc:oracle:thin:@amrood:1521:EMP";
Properties info = new Properties( );
info.put( "user", "username" );
info.put( "password", "password" );

Connection conn = DriverManager.getConnection(URL, info);

Zamykanie połączeń JDBC

Na końcu programu JDBC wymagane jest jawne zamknięcie wszystkich połączeń z bazą danych w celu zakończenia każdej sesji bazy danych. Jeśli jednak zapomnisz, moduł odśmiecania pamięci Javy zamknie połączenie, gdy wyczyści nieaktualne obiekty.

Poleganie na wyrzucaniu elementów bezużytecznych, zwłaszcza w programowaniu baz danych, jest bardzo złą praktyką programistyczną. Powinieneś mieć zwyczaj zamykania połączenia za pomocą metody close () skojarzonej z obiektem connection.

Aby upewnić się, że połączenie jest zamknięte, możesz umieścić w swoim kodzie blok „końcowego”. Wreszcie zablokowanie był uruchamiany, bez wyjątku występuje, czy nie.

Aby zamknąć powyższe otwarte połączenie, należy wywołać metodę close () w następujący sposób -

conn.close();

Jawne zamknięcie połączenia oszczędza zasoby DBMS, co uszczęśliwi administratora bazy danych.

Aby lepiej zrozumieć, zalecamy zapoznanie się z naszym samouczkiem dotyczącym JDBC - przykładowy kod .