Nawiązywanie połączenia JDBC w Javie

Nawiązywanie połączenia JDBC w Javie

Zanim Nawiązywanie połączenia JDBC w Javie (frontend, czyli program Java i back-end, czyli baza danych) powinniśmy dowiedzieć się, czym dokładnie jest JDBC i dlaczego powstał. Omówmy teraz, co dokładnie oznacza JDBC, i wyjaśnimy to za pomocą rzeczywistych ilustracji, aby to zadziałało.

Co to jest JDBC?

JDBC to skrót od Java Database Connectivity. Jest to postęp w zakresie ODBC (Open Database Connectivity). JDBC to standardowa specyfikacja API opracowana w celu przenoszenia danych z frontonu do backendu. To API składa się z klas i interfejsów napisanych w Javie. Zasadniczo działa jako interfejs (nie ten, którego używamy w Javie) lub kanał pomiędzy programem Java a bazami danych, tj. ustanawia łącze między nimi, dzięki czemu programista może wysyłać dane z kodu Java i przechowywać je w bazie danych do wykorzystania w przyszłości .

Ilustracja: Praca JDBC powiązana z czasem rzeczywistym

praca_w_JDBC w czasie rzeczywistym

Dlaczego JDBC powstało?

Jak wcześniej powiedziano, JDBC stanowi postęp w stosunku do ODBC, ponieważ ODBC jest zależne od platformy, ma wiele wad. Interfejs API ODBC został napisany w językach C, C++, Python i Core Java i jak wiemy powyżej, języki (z wyjątkiem Java i niektórych części Pythona) są zależne od platformy. Dlatego też, aby usunąć zależność, dostawca baz danych opracował JDBC, który składał się z klas i interfejsów napisanych w Javie.

Kroki łączenia aplikacji Java z bazą danych

Poniżej znajdują się kroki wyjaśniające, jak połączyć się z bazą danych w Javie:

Krok 1 – Zaimportuj pakiety
Krok 2 – Załaduj sterowniki za pomocą pliku metoda forName().
Krok 3 – Zarejestruj sterowniki za pomocą DriverManagera
Krok 4 – Nawiąż połączenie za pomocą obiektu klasy Connection
Krok 5 – Utwórz oświadczenie
Krok 6 – Wykonaj zapytanie
Krok 7 – Zamknąć połączenia

Łączność z bazą danych Java

Nawiązywanie połączenia-JDBC-w-Java

Omówmy pokrótce te kroki przed wdrożeniem, pisząc odpowiedni kod ilustrujący kroki łączności dla JDBC.

Krok 1: Zaimportuj pakiety

Krok 2: Ładowanie sterowników

Na początek należy najpierw załadować sterownik lub zarejestrować go przed użyciem go w programie. Rejestracji należy dokonać jednorazowo w swoim programie. Możesz zarejestrować kierowcę na jeden z dwóch sposobów wymienionych poniżej:

2-A Klasa.dlaNazwy()

Tutaj ładujemy plik klasy sterownika do pamięci w czasie wykonywania. Nie ma potrzeby używania nowych ani tworzenia obiektów. Poniższy przykład wykorzystuje funkcję Class.forName() do załadowania sterownika Oracle, jak pokazano poniżej:

Class.forName(oracle.jdbc.driver.OracleDriver); 

2-B DriverManager.registerDriver()

DriverManager to wbudowana klasa Java ze statycznym rejestrem członkowskim. Tutaj wywołujemy konstruktora klasy sterownika w czasie kompilacji. Poniższy przykład wykorzystuje DriverManager.registerDriver() do zarejestrowania sterownika Oracle, jak pokazano poniżej:

 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) 

Krok 3: Nawiąż połączenie za pomocą the Obiekt klasy połączenia

Po załadowaniu sterownika nawiąż połączenia w sposób pokazany poniżej:

Connection con = DriverManager.getConnection(url,user,password) 
  • użytkownik: U nazwa_serwera, z której można uzyskać dostęp do wiersza poleceń SQL.
  • hasło: hasło, za pomocą którego można uzyskać dostęp do wiersza poleceń SQL.
  • z: Jest to odniesienie do interfejsu Connection.
  • Adres URL : Uniform Resource Locator utworzony w sposób pokazany poniżej:
String url = jdbc:oracle:thin:@localhost:1521:xe 

Tam, gdzie Oracle to używana baza danych, cienki to używany sterownik, @localhost to adres IP, pod którym przechowywana jest baza danych, 1521 to numer portu, a xe to dostawca usług. Wszystkie 3 powyższe parametry są typu String i muszą zostać zadeklarowane przez programistę przed wywołaniem funkcji. Użycie tego można określić jako ostateczny kod.

Krok 4: Utwórz oświadczenie

Po nawiązaniu połączenia możesz wchodzić w interakcję z bazą danych. Interfejsy JDBCStatement, CallableStatement i PreparedStatement definiują metody umożliwiające wysyłanie poleceń SQL i odbieranie danych z bazy danych.
Sposób użycia instrukcji JDBC jest następujący:

Statement st = con.createStatement(); 

Notatka: Tutaj con jest odniesieniem do interfejsu połączenia użytego w poprzednim kroku.

Krok 5: Wykonaj zapytanie

Teraz następuje najważniejsza część, czyli wykonanie zapytania. Zapytanie w tym przypadku jest zapytaniem SQL. Teraz wiemy, że możemy mieć wiele typów zapytań. Niektóre z nich są następujące:

  • Zapytanie o aktualizację/wstawienie tabeli do bazy danych.
  • Zapytanie o pobranie danych.

Metoda wykonywaniaQuery() platformy Interfejs instrukcji służy do wykonywania zapytań o pobranie wartości z bazy danych. Ta metoda zwraca obiekt ResultSet, którego można użyć do pobrania wszystkich rekordów tabeli.
Metoda generateUpdate(sql query) interfejsu Statement służy do wykonywania zapytań dotyczących aktualizacji/wstawiania.

Pseudo kod:

int m = st.executeUpdate(sql); if (m==1)  System.out.println('inserted successfully : '+sql); else  System.out.println('insertion failed'); 

Tutaj sql to zapytanie SQL typu String:

Jawa




// This code is for establishing connection with MySQL> // database and retrieving data> // from db Java Database connectivity> /*> > *1. import --->java.sql> > *2. load and register the driver --->com.jdbc.> > *3. create connection> > *4. create a statement> > *5. execute the query> > *6. process the results> > *7. close> > */> import> java.io.*;> import> java.sql.*;> class> GFG {> > public> static> void> main(String[] args)> throws> Exception> > {> > String url> > => 'jdbc: mysql://localhost:3306/table_name '> ; // table details> > String username => 'rootgfg'> ;> // MySQL credentials> > String password => 'gfg123'> ;> > String query> > => 'select *from students'> ;> // query to be run> > Class.forName(> > 'com.mysql.cj.jdbc.Driver'> );> // Driver name> > Connection con = DriverManager.getConnection(> > url, username, password);> > System.out.println(> > 'Connection Established successfully'> );> > Statement st = con.createStatement();> > ResultSet rs> > = st.executeQuery(query);> // Execute query> > rs.next();> > String name> > = rs.getString(> 'name'> );> // Retrieve name from db> > System.out.println(name);> // Print result on console> > st.close();> // close statement> > con.close();> // close connection> > System.out.println(> 'Connection Closed....'> );> > }> }>

Wyjście :

okno_konsoli

Krok 6: Zamknięcie połączeń

W końcu wysłaliśmy dane we wskazane miejsce i jesteśmy już o krok od wykonania naszego zadania. Zamknięcie połączenia spowoduje automatyczne zamknięcie obiektów Statement i ResultSet. Do zamknięcia połączenia używana jest metoda close() interfejsu Connection. Poniżej pokazano to w następujący sposób:

 con.close(); 

Przykład:

Jawa




// Java Program to Establish Connection in JDBC> // Importing database> import> java.sql.*;> // Importing required classes> import> java.util.*;> // Main class> class> Main {> > // Main driver method> > public> static> void> main(String a[])> > {> > // Creating the connection using Oracle DB> > // Note: url syntax is standard, so do grasp> > String url => 'jdbc:oracle:thin:@localhost:1521:xe'> ;> > // Username and password to access DB> > // Custom initialization> > String user => 'system'> ;> > String pass => '12345'> ;> > // Entering the data> > Scanner k => new> Scanner(System.in);> > System.out.println(> 'enter name'> );> > String name = k.next();> > System.out.println(> 'enter roll no'> );> > int> roll = k.nextInt();> > System.out.println(> 'enter class'> );> > String cls = k.next();> > // Inserting data using SQL query> > String sql => 'insert into student1 values(''> + name> > +> '','> + roll +> ',''> + cls +> '')'> ;> > // Connection class object> > Connection con => null> ;> > // Try block to check for exceptions> > try> {> > // Registering drivers> > DriverManager.registerDriver(> > new> oracle.jdbc.OracleDriver());> > // Reference to connection interface> > con = DriverManager.getConnection(url, user,> > pass);> > // Creating a statement> > Statement st = con.createStatement();> > // Executing query> > int> m = st.executeUpdate(sql);> > if> (m ==> 1> )> > System.out.println(> > 'inserted successfully : '> + sql);> > else> > System.out.println(> 'insertion failed'> );> > // Closing the connections> > con.close();> > }> > // Catch block to handle exceptions> > catch> (Exception ex) {> > // Display message when exceptions occurs> > System.err.println(ex);> > }> > }> }>

Dane wyjściowe po zaimportowaniu danych do bazy danych:

Output_screen_after_importing_data