java jdbc connection tutorial with programming example
Ta vadnica za povezavo JDBC pojasnjuje osnovne korake do baze podatkov s primeri in ponuja nize povezav JDBC za različne baze podatkov:
ki je najboljši ponudnik e-pošte
V prejšnji vadnici Serija vadnic JDBC , smo se naučili komponent, arhitekture in vrst gonilnikov v Java Database Connectivity (JDBC).
V tej vadnici bomo razpravljali o korakih za povezavo z bazami podatkov z uporabo JDBC. Ta vadnica vam bo pokazala, kako vzpostaviti povezavo JDBC in izvajati operacije baze podatkov. JDBC API deluje kot vmesnik med programom Java in bazo podatkov.
Na koncu te vadnice boste lahko napisali programe Java za povezovanje z bazami podatkov in izvajanje operacij DB.
Kaj se boste naučili:
Koraki za povezavo JDBC
Obstaja 6 osnovnih korakov za povezavo z JDBC. Vpisani so na spodnji sliki:
# 1) Uvoz paketov
Najprej moramo uvoziti obstoječe pakete, da jih uporabimo v našem programu Java. Uvoz bo zagotovil, da bodo za program na voljo razredi JDBC API. Nato lahko uporabimo razrede in podrazrede paketov.
Ne glede na gonilnik JDBC v program Java dodajte naslednjo izjavo o uvozu.
import java.sql.*;
Uvozite druge razrede glede na funkcionalnost, ki jo boste uporabljali v programu. Prenesite ustrezne datoteke Jar za zbirko podatkov, ki jo boste uporabljali v programu.
Glejte prejšnja vadnica za povezave za prenos datotek Jar za vašo bazo podatkov.
JDBC API 4.0 ponuja predvsem dva pomembna paketa:
- java.sql
- javax.sql
(i) paket java.sql
Ta paket ponuja razrede in vmesnike za izvajanje večine funkcij JDBC, kot je ustvarjanje in izvajanje poizvedb SQL.
Razredi / vmesniki | Opis |
---|---|
DriverManager | Zagotavlja osnovno storitev za upravljanje nabora gonilnikov JDBC |
BLOB | Predstavlja vrednost SQL Blob v programu Java |
CallableStatement | Uporablja se za izvajanje shranjenih procedur SQL |
CLOB | Predstavlja vrednost SQL Clob v programu Java |
Povezava | Ustvari povezavo (sejo) z določeno bazo podatkov |
Datum | Zagotavlja podporo za tip SQL Date |
Voznik | Ustvari primerek gonilnika z upravljalnikom gonilnikov |
ParameterMetaData | Je objekt, s katerim lahko dobite informacije o vrstah in lastnostih vsakega parametra v objektu PreparedStatement |
PreparedStatement | Uporablja se za ustvarjanje in izvajanje parametrizirane poizvedbe v programu Java |
ResultSet | Uporablja se za dostop do rezultata po vrsticah |
ResultSetMetaData | Uporablja se za pridobivanje informacij o vrstah in lastnostih stolpcev v objektu ResultSet |
Vrstica | Predstavlja vrednost SQL ROWID |
Savepoint | Predstavlja shrambo v transakciji |
SQLData | Uporablja se za preslikavo uporabniško določenega tipa SQL (UDT) v razred v programu Java |
SQLXML | Predstavlja tip XML SQL |
Izjava | Uporablja se za izvajanje statičnega stavka SQL |
DriverPropertyInfo | Zagotavlja lastnosti gonilnika za vzpostavitev povezave |
SQLException | Zagotavlja informacije o napakah baze podatkov |
SQLTimeoutException | To je podrazred SQLException, vržen, ko je potekel čas, ki ga določa stavek |
SQLOpozorilo | Izjema je informacija o opozorilih o dostopu do baze podatkov |
Struktura | Gre za standardno preslikavo v programu Java za strukturiran tip SQL |
(ii) paket javax.sql
Je API razširitve JDBC in zagotavlja dostop in obdelavo podatkov na strani strežnika v programu Java.
Razredi / vmesniki | Opis |
---|---|
ConnectionEvent | Zagotavlja informacije o pojavu dogodkov, povezanih s povezavo |
CommonDataSource | To je vmesnik, ki določa metode, ki so skupne med DataSource, XADataSource in ConnectionPoolDataSource |
ConnectionPoolDataSource | To je tovarna za predmete PooledConnection |
Vir podatkov | Je tovarna za povezave s fizičnim izvorom podatkov, ki ga objekt predstavlja |
PooledConnection | Uporablja se za upravljanje Connection Pool |
RowSet | Omogoča podporo JDBC API-ju za komponentni model fižola Java |
RowSetMetadata | Vsebuje informacije o stolpcih v objektu RowSet |
ConnectionEventListener | Uporablja se za registracijo dogodkov objekta PooledConnection |
RowSetEvent | Ustvari, ko se dogodek zgodi za objekt Rowset |
StatementEvent | Pošlje se vsem StatementEventListeners, ki so bili registrirani z ustvarjenim PooledConnection |
# 2) Naloži gonilnik
Najprej moramo v program naložiti / registrirati gonilnik, preden se povežemo z bazo podatkov. Registrirati ga morate samo enkrat na bazo podatkov v programu.
Gonilnik lahko naložimo na dva načina:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
Na ta način se voznikova datoteka razreda med izvajanjem naloži v pomnilnik. Voznik implicitno naloži. Med nalaganjem se bo voznik samodejno registriral v JDBC.
Ime DB | Ime gonilnika JDBC |
---|---|
Sybase | com.sybase.jdbcSybDriver |
MySQL | com.mysql.jdbc.Driver |
Oracle | oracle.jdbc.driver.OracleDriver |
Microsoft SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
MS Access | net.ucanaccess.jdbc.UcanaccessDriver |
PostgreSQL | org.postgresql.Driver |
IBM DB2 | com.ibm.db2.jdbc.net.DB2Driver |
TeraData | com.teradata.jdbc.TeraDriver |
Opomba: metoda forName () velja samo za navidezne stroje, skladne z JDK.
(ii) DriverManager.registerDriver ()
DriverManager je vgrajeni razred, ki je na voljo v paketu java.sql. Deluje kot posrednik med aplikacijo Java in bazo podatkov, ki jo želite povezati. Preden se povežete z bazo podatkov, morate gonilnik registrirati v DriverManager. Glavna naloga DriverManagerja je naložiti razred gonilnikov zbirke podatkov in ustvariti povezavo z DB.
Javni statični void registerDriver (voznik) - Ta metoda bo gonilnik registrirala pri upravitelju gonilnikov. Če je voznik že registriran, potem ne bo ukrepal.
- Vrglo bo SQLException če pride do napake baze podatkov.
- Vrglo bo NullPointerException če je gonilnik ničen.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
Tako lahko gonilnik za svojo bazo podatkov registrirate tako, da ga posredujete kot parameter.
# 3) Vzpostavite povezavo
Po nalaganju gonilnika je naslednji korak ustvariti in vzpostaviti povezavo. Ko so paketi uvoženi, gonilniki pa naloženi in registrirani, lahko nadaljujemo z vzpostavitvijo povezave z bazo podatkov.
Razred DriverManager ima metodo getConnection, s katero bomo vzpostavili povezavo z bazo podatkov. Če želite poklicati metodo getConnection (), moramo prenesti 3 parametre. 3 parametri so URL podatkovnega niza, uporabniško ime in geslo za dostop do baze podatkov.
Metoda getConnection () je preobremenjena metoda. Dve metodi sta:
- getConnection (URL, uporabniško ime, geslo); - Ima 3 parametre URL, uporabniško ime in geslo.
- getConnection (URL); - Ima samo en parameter. URL ima tudi uporabniško ime in geslo.
Naslednja tabela navaja nize povezav JDBC za različne zbirke podatkov:
Zbirka podatkov | Niz povezave / URL DB |
---|---|
Sybase | jdbc: Sybase: Tds: HOSTNAME: PORT / DATABASE_NAME |
MySQL | jdbc: mysql: // HOST_NAME: PORT / DATABASE_NAME |
Oracle | jdbc: oracle: thin: @HOST_NAME: PORT: SERVICE_NAME |
Microsoft SQL Server | jdbc: sqlserver: // HOST_NAME: PORT; Ime baze podatkov = |
MS Access | jdbc: ucanaccess: // DATABASE_PATH |
PostgreSQL | jdbc: postgresql: // HOST_NAME: PORT / DATABASE_NAME |
IBM DB2 | jdbc: db2: // HOSTNAME: PORT / DATABASE_NAME |
TeraData | jdbc: teradata: // HOSTNAME / database =, tmode = ANSI, charset = UTF8 |
Primer:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Tu v tem primeru
- tanka se nanaša na vrsto voznika.
- lokalni gostitelj tam se izvaja baza podatkov Oracle.
- 1521 je številka vrat za povezavo z DB.
- vozilu - SID
- Sistem - Uporabniško ime za povezavo z bazo podatkov Oracle.
- Pass123 @ - Geslo
# 4) Ustvari in izvrši izjavo
Ko je povezava vzpostavljena, lahko komuniciramo s povezano bazo podatkov. Najprej moramo ustvariti stavek za izvedbo poizvedbe SQL in nato izvršiti stavek.
(i) Ustvari izjavo
Zdaj bomo ustvarili objekt stavka, ki zažene poizvedbo s povezano bazo podatkov. Uporabljamo metodo createStatement za Povezava razred za ustvarjanje poizvedbe.
V paketu java.sql so na voljo 3 vmesniki stavkov. Ti so pojasnjeni spodaj:
izjava
Ta vmesnik se uporablja za izvajanje preprostih stavkov SQL brez parametra. Vrne objekt ResultSet.
Statement statemnt1 = conn.createStatement();
b) Pripravljena izjava
Ta vmesnik PreparedStatement razširja vmesnik Statement. Torej ima več funkcij kot vmesnik Statement. Uporablja se za izvajanje parametriziranih in vnaprej prevedenih stavkov SQL. Zmogljivost aplikacije se poveča, ker poizvedbo sestavi samo enkrat.
Ta vmesnik je enostavno ponovno uporabiti z novim parametrom. Podpira parameter IN. Tudi to izjavo lahko uporabimo brez kakršnega koli parametra.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
c) CallableStatement
Vmesnik CallableStatement razširja vmesnik PreparedStatement. Torej ima več funkcij kot vmesnik PreparedStatement. Uporablja se za izvajanje parametriziranega stavka SQL, ki prikliče postopek ali funkcijo v zbirki podatkov. Shranjeni postopek deluje kot metoda ali funkcija v razredu. Podpira parametre IN in OUT.
Primerek CallableStatement se ustvari s klicanjem metode prepaCall objekta Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ii) Izvedite poizvedbo
Obstajajo 4 pomembne metode za izvedbo poizvedbe v vmesniku Statement. Ti so pojasnjeni spodaj:
- ResultSet executeQuery (niz sql)
- int executeUpdate (niz sql)
- logično izvajanje (niz sql)
- int () executeBatch ()
a) ResultSet executeQuery (niz sql)
Metoda executeQuery () v vmesniku Statement se uporablja za izvedbo poizvedbe SQL in pridobivanje vrednosti iz DB. Vrne objekt ResultSet. Običajno bomo to metodo uporabili za poizvedbo SELECT.
b) executeUpdate (niz sql)
Metoda executeUpdate () se uporablja za izvajanje poizvedb, določenih z vrednostmi, kot so INSERT, UPDATE, DELETE (stavki DML) ali DDL, ki ne vrnejo ničesar. To metodo bomo večinoma uporabljali za vstavljanje in posodabljanje.
c) izvrši (String sql)
Metoda execute () se uporablja za izvajanje poizvedbe SQL. Vrne se prav če izvede poizvedbo SELECT. In se vrne napačno če izvede poizvedbo INSERT ali UPDATE.
d) executeBatch ()
Ta metoda se uporablja za izvedbo paketa poizvedb SQL v zbirko podatkov in če se vse poizvedbe uspešno izvedejo, vrne množico števcev posodobitev. S to metodo bomo vstavili / posodobili večino zapisov.
# 5) Pridobite rezultate
Ko poizvedbe izvajamo z metodo executeQuery (), se rezultat shrani v predmet ResultSet. Vrnjeni predmet ResultSet nikoli ne bo nič, tudi če v tabeli ni ustreznega zapisa. Objekt ResultSet se uporablja za dostop do podatkov, pridobljenih iz baze podatkov.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
Za poizvedbo SELECT lahko uporabimo metodo executeQuery (). Ko nekdo poskuša izvesti poizvedbo za vstavljanje / posodobitev, bo vrgel SQLExecption s sporočilom » Metode executeQuery ni mogoče uporabiti za posodobitev '.
Objekt ResultSet kaže na trenutno vrstico v nizu rezultatov. Če želite ponoviti podatke v objektu ResultSet, v zanki while pokličite metodo next (). Če ni več zapisa za branje, bo vrnil FALSE.
ResultSet se lahko uporablja tudi za posodobitev podatkov v DB. Podatke lahko dobimo iz ResultSet z uporabo getter metod, kot so getInt (), getString (), getDate (). Kot parameter moramo prenesti indeks stolpca ali ime stolpca, da dobimo vrednosti z uporabo metod Getter.
Več o ResultSetu bomo spoznali v naslednji vadnici.
# 6) Zapri povezavo
Končno smo končali z manipulacijo podatkov v DB. Zdaj lahko zapremo povezavo JDBC. Prepričati se moramo, da smo vir zaprli, potem ko smo ga uporabili. Če jih ne zapremo pravilno, bomo morda ostali brez povezav.
Ko zapremo objekt povezave, se objekt Statement in ResultSet samodejno zapreta.
conn.close();
Od Jave 7 naprej lahko povezave JDBC samodejno zapremo z blokom try-catch. Povezavo JDBC je treba odpreti v oklepaju poskusnega bloka. Znotraj poskusnega bloka lahko povežete z bazo podatkov normalno kot mi.
Ko izvedba zapusti poskusni blok, samodejno prekine povezavo. V tem primeru nam ni treba zapreti povezave s klicem metode conn.close v programu Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Primer povezave Java JDBC
V tem primeru boste videli, kako izvesti 6 osnovnih korakov za povezavo z bazo podatkov z uporabo JDBC v programu Java.
Ustvari tabelo
Pred tem najprej ustvarite eno tabelo in vanjo dodajte nekaj vnosov.
Spodaj je poizvedba SQL za ustvarjanje tabele.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
Ustvaril tabelo 'worker_details' v Oracle DB.
Vstavite podatke v tabelo
Z naslednjimi poizvedbami podatke vstavite v tabelo 'worker_details'.
insert into employee_details values (1001, 'Luther', 'Martin', 'ml@gmail.com', 1, 13000); insert into employee_details values (1002, 'Murray', 'Keith', 'km@gmail.com', 2, 25000); insert into employee_details values (1003, 'Branson', 'John', 'jb@gmail.com', 3, 15000); insert into employee_details values (1004, 'Martin', 'Richard', 'rm@gmail.com', 4, 16000); insert into employee_details values (1005, 'Hickman', 'David', 'dh@gmail.com', 5, 17000);
Java program
Prenesite datoteko jar JDBC in jo uvozite v projekt Java.
package com.STH.JDBC; // import sql package to use it in our program import java.sql.*; public class Sample_JDBC_Program { public static void main(String() args) throws ClassNotFoundException, SQLException { // store the SQL statement in a string String QUERY = 'select * from employee_details'; //register the oracle driver with DriverManager Class.forName('oracle.jdbc.driver.OracleDriver'); //Here we have used Java 8 so opening the connection in try statement try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Created statement and execute it ResultSet rs1 = statemnt1.executeQuery(QUERY); { //Get the values of the record using while loop while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); //store the values which are retrieved using ResultSet and print it System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } } catch (SQLException e) { //If exception occurs catch it and exit the program e.printStackTrace(); } } }
Izhod:
Ključne točke, ki jih je treba upoštevati:
- Najprej moramo uvoziti pakete, ki jih bomo uporabili v našem programu Java za povezavo JDBC. Tako lahko uporabimo razrede, podrazrede in vmesnike v paketih.
- Pred vzpostavitvijo povezave moramo voznik registrirati ali naložiti v DriverManager.
- Po registraciji gonilnika lahko vzpostavimo povezavo in izvedemo operacije.
- Z uporabo stavkovnega vmesnika lahko ustvarimo in izvedemo poizvedbo SQL. Za preprosto poizvedbo SQL lahko uporabimo vmesnik Statement. Za vstavljanje / posodabljanje / brisanje lahko uporabimo vmesnik PreparedStatement.
- Po izvedbi stavka bodo rezultati shranjeni v objektu ResultSet. Rezultate predmeta ResultSet dobimo z uporabo metode next () za več kot 1 zapis.
- Ko končamo z operacijo baze podatkov, moramo povezavo zapreti. Tako da bo vir na voljo drugim.
Pogosto zastavljena vprašanja
V # 1) Kateri so temeljni koraki za povezavo z DB v Javi?
zagotavljanje kakovosti programske opreme v programskem inženiringu
Odgovor: Obstaja 6 osnovnih korakov za povezavo z DB v Javi.
To so:
- Uvozni paket
- Naloži gonilnik
- Vzpostavite povezavo
- Ustvari in izvrši stavek
- Pridobite rezultate
- Zapri povezavo
V # 2) Kakšna je razlika med podatkovnimi vrstami BLOB in CLOB v JDBC?
Odgovor:
BLOB se uporablja za shranjevanje binarne vrste podatkov. Velikost pomnilnika se lahko razlikuje glede na zbirke podatkov Primer: slike, glas, video.
CLOB se uporablja za shranjevanje vrste znakovnih podatkov. Tako kot CLOB se lahko prostor za shranjevanje razlikuje glede na DB. Primer: datotek.
V # 3) Katera metoda razreda DriverManager se uporablja za vzpostavitev povezave z DB?
Odgovor: Razred DriverManager ima metodo getConnection (), ki se uporablja za vzpostavitev povezave z DB.
V # 4) Kakšna je razlika med Class.forName () in DriverManager.registerDriver ()?
Odgovor: Class.forName () - Najprej naloži gonilnik v pomnilnik, nato pa ustreznega gonilnika registrira v upravitelju gonilnikov. Nato bo ustvaril objekt gonilnika za izvedbo povezave JDBC. Gonilnik bo izrecno naložil.
DriverManager.registerDriver () - Gonilnik implicitno registrira.
V # 5) Kaj je uhajanje povezave?
Odgovor: To se zgodi, ko je povezava odprta in je niste zaprli. Če obstaja blok kode, ki odpre povezavo in ne prekine povezave. Kadar koli se ta blok kode izvede, bo povezava puščala iz področja povezav.
Ko bodo vse razpoložljive povezave uhajale, nobena povezava ne bo več na voljo in aplikacija bo visela. Koliko je pomembno, da odprete povezavo, koliko je pomembno, da zaprete povezavo.
V # 6) Ali je obvezno zapreti povezavo?
Odgovor: Če uporabljate različice Java pod 7, morate povezavo zapreti ročno.
Od različic nad Java 7 lahko povezavo samodejno zapremo tako, da v oklepaju poskusnega bloka odpremo kodo povezave JDBC. Ko program zapre poskusni blok, samodejno prekine povezavo.
Zaključek
V tej vadnici smo razpravljali o tem, kako vzpostaviti povezavo JDBC. Zdaj lahko izvajate operacije DB z uporabo JDBC v programu Java. Raziskali smo 6 osnovnih korakov za povezavo z bazo podatkov. Za uporabo moramo uvoziti pakete v našem programu Java.
Ko registriramo gonilnik, lahko vzpostavimo povezavo. Izkaz SQL lahko ustvarimo in izvedemo z uporabo vmesnika Statement in pridobimo rezultate v objektu ResultSet. Kot zadnji korak bi morali zapreti povezavo.
Priporočeno branje
- Java JDBC Vadnica: Kaj je JDBC (Java Database Connectivity)
- Vadnica Java vmesnika in abstraktnega razreda s primeri
- Upravljanje transakcij Java JDBC s primerom
- JDBC DriverManager, JDBC PreparedStatement In Statement
- JDBC ResultSet: Kako uporabiti Java ResultSet za pridobivanje podatkov
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Uvod v programski jezik Java - Video vadnica
- Testiranje baze podatkov o selenu (z uporabo WebDriver in JDBC API)