java jdbc connection tutorial with programming example
Ovaj vodič za JDBC povezivanje objašnjava osnovne korake do baze podataka s primjerima i pruža JDBC nizove veza za različite baze podataka:
kako pronaći zadanu masku podmreže
U prethodnom vodiču JDBC serija lekcija , naučili smo komponente, arhitekturu i vrste upravljačkih programa u Java Database Connectivity (JDBC).
U ovom uputstvu razgovarat ćemo o koracima za povezivanje s bazama podataka pomoću JDBC-a. Ovaj vodič će vam pokazati kako se vrši JDBC veza i izvode operacije baze podataka. JDBC API djeluje kao sučelje između Java programa i baze podataka.
Na kraju ovog vodiča moći ćete napisati Java programe za povezivanje s bazama podataka i izvođenje DB operacija.
Što ćete naučiti:
Koraci povezivanja JDBC
Postoji 6 osnovnih koraka za povezivanje s JDBC. Oni su navedeni na donjoj slici:
# 1) Uvozni paketi
Prvo, moramo uvesti postojeće pakete da bismo ga koristili u našem Java programu. Uvoz će osigurati da su klase JDBC API dostupne za program. Tada možemo koristiti klase i podrazrede paketa.
Bez obzira na JDBC pogonitelj, dodajte sljedeću izjavu o uvozu u Java program.
import java.sql.*;
Uvezite ostale klase na temelju funkcionalnosti koju ćete koristiti u programu. Preuzmite odgovarajuće Jar datoteke za bazu podataka koju ćete koristiti u programu.
Pogledajte prethodni tutorial za veze za preuzimanje datoteka Jar za vašu bazu podataka.
JDBC API 4.0 uglavnom nudi 2 važna paketa:
- java.sql
- javax.sql
(i) paket java.sql
Ovaj paket nudi klase i sučelja za izvođenje većine JDBC funkcija poput stvaranja i izvršavanja SQL upita.
Klase / sučelja | Opis |
---|---|
DriverManager | Pruža osnovnu uslugu za upravljanje skupom JDBC upravljačkih programa |
BLOB | Predstavlja vrijednost SQL Blob u programu Java |
CallableStatement | Koristi se za izvršavanje SQL pohranjenih procedura |
KLOB | Predstavlja vrijednost SQL Clob u programu Java |
Veza | Stvara vezu (sesiju) s određenom bazom podataka |
Datum | Pruža podršku za tip SQL Date |
Vozač | Stvara instancu upravljačkog programa s upravljačkim programom vozača |
ParameterMetaData | To je objekt koji se može koristiti za dobivanje informacija o vrstama i svojstvima svakog parametra u objektu PreparedStatement |
PreparedStatement | Koristi se za stvaranje i izvršavanje parametriziranog upita u programu Java |
Postavi rezultat | Koristi se za pristup retku po redu |
ResultSetMetaData | Koristi se za dobivanje informacija o vrstama i svojstvima stupaca u ResultSet objektu |
Redni ID | Predstavlja vrijednost SQL ROWID |
Savepoint | Predstavlja točku spremanja u transakciji |
SQLData | Koristi se za mapiranje SQL korisnički definiranog tipa (UDT) u klasu u Java programu |
SQLXML | Predstavlja SQL XML tip |
Izjava | Koristi se za izvršavanje statičkog SQL izraza |
DriverPropertyInfo | Pruža svojstva upravljačkog programa za uspostavljanje veze |
SQLException | Pruža informacije o pogreškama baze podataka |
SQLTimeoutException | To je podrazred SQLException bačen kad je isteklo vrijeme čekanja navedeno u izjavi |
SQLUpozorenje | Iznimka je koja pruža informacije o upozorenjima o pristupu bazi podataka |
Struktura | To je standardno mapiranje u Java programu za SQL strukturirani tip |
(ii) paket javax.sql
To je API JDBC proširenja i pruža pristup i obradu podataka na strani poslužitelja u Java programu.
Klase / sučelja | Opis |
---|---|
ConnectionEvent | Pruža informacije o pojavi događaja povezanih s vezom |
CommonDataSource | To je sučelje koje definira metode uobičajene za DataSource, XADataSource i ConnectionPoolDataSource |
ConnectionPoolDataSource | To je tvornica za PooledConnection objekte |
Izvor podataka | To je tvornica za veze s fizičkim DataSourceom koji objekt predstavlja |
PooledConnection | Koristi se za upravljanje spremištem veze |
RowSet | Pruža podršku JDBC API-ju za komponentni model Java graha |
RowSetMetadata | Sadrži informacije o stupcima u objektu RowSet |
ConnectionEventListener | Koristi se za registraciju događaja objekta PooledConnection |
RowSetEvent | Generira se kada se događaj dogodi objektu Rowset |
StatementEvent | Šalje se svim StatementEventListeners koji su registrirani s generiranim PooledConnectionom |
# 2) Učitavanje pokretačkog programa
Prvo, trebali bismo učitati / registrirati upravljački program u programu prije spajanja na bazu podataka. Trebate ga registrirati samo jednom po bazi podataka u programu.
Vozač možemo učitati na sljedeća 2 načina:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
Na taj se način datoteka klase vozača učitava u memoriju za vrijeme izvođenja. To implicitno učitava vozač. Tijekom učitavanja, vozač će se automatski registrirati na JDBC.
DB ime | Ime upravljačkog programa 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 |
Bilješka: metoda forName () vrijedi samo za JDK sukladne virtualne strojeve.
(ii) DriverManager.registerDriver ()
DriverManager je ugrađena klasa koja je dostupna u paketu java.sql. Djeluje kao posrednik između Java aplikacije i baze podataka koju želite povezati. Prije nego što se povežete s bazom podataka, morate registrirati upravljački program u DriverManageru. Glavna funkcija DriverManager-a je učitavanje klase upravljačkih programa baze podataka i stvaranje veze s DB-om.
Javni statički void registerDriver (vozač) - Ovom će se metodom upravljački program registrirati u upravljačkom programu. Ako je vozač već registriran, neće poduzeti nikakve radnje.
- Baciće SQLException ako se dogodi pogreška baze podataka.
- Baciće NullPointerException ako je vozač null.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
Na ovaj način možete registrirati upravljački program za svoju bazu podataka tako da ga proslijedite kao parametar.
# 3) Uspostavite vezu
Nakon učitavanja upravljačkog programa, sljedeći je korak stvaranje i uspostavljanje veze. Kad se zatraži, paketi se uvezu, a upravljački programi učitavaju i registriraju, onda možemo ići na uspostavljanje veze s bazom podataka.
Klasa DriverManager ima metodu getConnection, a mi ćemo je koristiti za povezivanje s bazom podataka. Da bismo pozvali metodu getConnection (), moramo proslijediti 3 parametra. Tri parametra su URL tipa podataka niza, korisničko ime i lozinka za pristup bazi podataka.
Metoda getConnection () preopterećena je metoda. Dvije metode su:
- getConnection (URL, korisničko ime, lozinka); - Ima 3 parametra URL, korisničko ime i lozinku.
- getConnection (URL); - Ima samo jedan parametar. URL također sadrži korisničko ime i lozinku.
Sljedeća tablica navodi JDBC nizove veza za različite baze podataka:
Baza podataka | Niz veze / DB URL |
---|---|
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 podataka = |
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 / baza podataka =, tmode = ANSI, charset = UTF8 |
Primjer:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Ovdje u ovom primjeru,
- tanka odnosi se na tip vozača.
- lokalnihost je mjesto gdje se izvodi Oracle baza podataka.
- 1521 je broj porta za povezivanje s DB-om.
- vozilo - ŠID
- Sustav - Korisničko ime za povezivanje s Oracle bazom podataka.
- Pass123 @ - Zaporka
# 4) Stvaranje i izvršavanje izjave
Jednom kada se veza uspostavi, možemo komunicirati s povezanom bazom podataka. Prvo, moramo stvoriti izraz da bismo izvršili SQL upit, a zatim izvršiti izraz.
(i) Napravite izjavu
Sada ćemo stvoriti objekt izraza koji pokreće upit s povezanom bazom podataka. Koristimo metodu createStatement za Veza klasa za stvaranje upita.
U paketu java.sql dostupna su 3 sučelja s izjavama. Oni su objašnjeni u nastavku:
Izjava
Ovo sučelje koristi se za implementaciju jednostavnih SQL izraza bez parametra. Vraća objekt ResultSet.
Statement statemnt1 = conn.createStatement();
b) Pripremljena izjava
Ovo sučelje PreparedStatement proširuje sučelje Statement. Dakle, ima više značajki od sučelja Statement. Koristi se za implementaciju parametriziranih i prekompajliranih SQL izraza. Izvedba aplikacije povećava se jer samo jednom sastavlja upit.
Lako je ponovno koristiti ovo sučelje s novim parametrom. Podržava parametar IN. Čak i ovu izjavu možemo koristiti bez ikakvog parametra.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
c) CallableStatement
Sučelje CallableStatement proširuje sučelje PreparedStatement. Dakle, ima više značajki od sučelja PreparedStatement. Koristi se za implementaciju parametriziranog SQL izraza koji poziva proceduru ili funkciju u bazi podataka. Pohranjeni postupak radi poput metode ili funkcije u klasi. Podržava IN i OUT parametre.
Instanca CallableStatement kreira se pozivanjem metode pripremaCall objekta Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ii) Izvršite upit
Postoje 4 važne metode za izvršavanje upita u sučelju Statement. Oni su objašnjeni u nastavku:
- ResultSet executeQuery (String sql)
- int executeUpdate (String sql)
- logičko izvršavanje (String sql)
- int [] executeBatch ()
a) ResultSet executeQuery (String sql)
Metoda executeQuery () u sučelju Statement koristi se za izvršavanje SQL upita i dohvaćanje vrijednosti iz DB-a. Vraća objekt ResultSet. Obično ćemo ovu metodu koristiti za upit SELECT.
pitanja i odgovori za intervju za sapun
b) executeUpdate (String sql)
Metoda executeUpdate () koristi se za izvršavanje upita zadanih vrijednostima poput INSERT, UPDATE, DELETE (DML naredbi) ili DDL izraza koji ne vraćaju ništa. Uglavnom ćemo se služiti ovom metodom za umetanje i ažuriranje.
c) izvrši (String sql)
Za izvršavanje SQL upita koristi se metoda execute (). Vraća se pravi ako izvrši SELECT upit. I, vraća se lažno ako izvršava INSERT ili UPDATE upit.
d) executeBatch ()
Ova se metoda koristi za izvršavanje serije SQL upita u bazu podataka i ako se svi upiti uspješno izvrše, vraća niz brojeva ažuriranja. Ovu ćemo metodu koristiti za umetanje / ažuriranje većine zapisa.
# 5) Dohvaćanje rezultata
Kada izvršavamo upite metodom executeQuery (), rezultat će se pohraniti u objekt ResultSet. Vraćeni objekt ResultSet nikada neće biti nulan čak i ako u tablici nema odgovarajući zapis. ResultSet objekt koristi se za pristup podacima preuzetim iz baze podataka.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
Za upit SELECT možemo koristiti metodu executeQuery (). Kada netko pokuša izvršiti upit za umetanje / ažuriranje, bacit će SQLExecption s porukom „ Način izvršavanjaQuery ne može se koristiti za ažuriranje '.
Objekt ResultSet pokazuje na trenutni redak u skupu rezultata. Da biste ponovili podatke u objektu ResultSet, pozovite metodu next () u while petlju. Ako više nema zapisa za čitanje, vratit će se FALSE.
ResultSet se također može koristiti za ažuriranje podataka u DB-u. Podatke iz ResultSet možemo dobiti pomoću metoda dobivača kao što su getInt (), getString (), getDate (). Moramo proslijediti indeks stupca ili naziv stupca kao parametar da bismo dobili vrijednosti pomoću metoda Getter.
Više o ResultSetu saznat ćemo u sljedećem vodiču.
# 6) Zatvorite vezu
Konačno, gotovi smo s manipulacijom podacima u DB-u. Sada možemo zatvoriti JDBC vezu. Moramo biti sigurni da smo zatvorili resurs nakon što smo ga upotrijebili. Ako ih ne zatvorimo pravilno, možemo završiti bez veza.
Kada zatvorimo objekt veze, objekti Statement i ResultSet automatski će se zatvoriti.
conn.close();
Od Jave 7 nadalje, JDBC veze možemo automatski zatvoriti pomoću bloka try-catch. JDBC vezu treba otvoriti u zagradi bloka try. Unutar bloka try možete normalno raditi veze s bazom podataka kao i mi.
Jednom kada izvršenje izađe iz bloka try, automatski će zatvoriti vezu. U ovom slučaju ne moramo zatvoriti vezu pozivanjem metode conn.close u programu Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Primjer Java JDBC veze
U ovom ćete primjeru vidjeti kako implementirati 6 osnovnih koraka za povezivanje s bazom podataka pomoću JDBC u Java programu.
Stvori tablicu
Prije toga, prvo stvorite jednu tablicu i dodajte neke unose u nju.
Ispod je SQL upit za stvaranje tablice.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
Stvorio tablicu 'worker_details' u Oracle DB-u.
Umetnite podatke u tablicu
Koristeći sljedeće upite, umetnite podatke u tablicu 'detalji_zaposlenika'.
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
Preuzmite JDBC jar datoteku i uvezite je u Java projekt.
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(); } } }
Izlaz:
Ključne točke koje treba napomenuti:
- Prvo, moramo uvesti pakete koje ćemo koristiti u našem Java programu za JDBC vezu. Tako možemo koristiti klase, potklase i sučelja u paketima.
- Moramo registrirati ili učitati upravljački program s DriverManager prije uspostavljanja veze.
- Nakon registracije upravljačkog programa možemo uspostaviti vezu i izvesti operacije.
- Korištenjem sučelja izraza možemo stvoriti i izvršiti SQL upit. Za jednostavan SQL upit možemo koristiti sučelje Statement. Za umetanje / ažuriranje / brisanje možemo koristiti sučelje PreparedStatement.
- Nakon izvršavanja izraza, rezultati će se pohraniti u objekt ResultSet. Rezultate dobivamo iz objekta ResultSet pomoću metode next () za više od 1 zapisa.
- Kad završimo s operacijom baze podataka, moramo zatvoriti vezu. Tako da će resurs biti dostupan drugima.
Često postavljana pitanja
P # 1) Koji su temeljni koraci za povezivanje s DB-om u Javi?
Odgovor: Postoji 6 osnovnih koraka za povezivanje s DB-om u Javi.
Oni su:
- Uvoz-paket
- Utovarivač tereta
- Uspostavite vezu
- Stvorite i izvršite izjavu
- Dohvaćanje rezultata
- Zatvori vezu
P # 2) Koja je razlika između tipova podataka BLOB i CLOB u JDBC?
Odgovor:
BLOB koristi se za čuvanje binarne vrste podataka. Veličina pohrane može se razlikovati ovisno o bazama podataka Primjer: slike, glas, video.
KLOB koristi se za držanje vrste znakova. Kao i CLOB, prostor za pohranu može se razlikovati ovisno o DB-u. Primjer: datoteke.
P # 3) Koja metoda klase DriverManager se koristi za uspostavljanje veze s DB-om?
Odgovor: Klasa DriverManager ima metodu getConnection () koja se koristi za uspostavljanje veze s DB-om.
P # 4) Koja je razlika između Class.forName () i DriverManager.registerDriver ()?
Odgovor: Class.forName () - Prvo učitava upravljački program u memoriju, a zatim registrira odgovarajući upravljački program u upravitelju upravljačkih programa. Tada će stvoriti objekt upravljačkog programa za izvođenje JDBC veze. Izričito će učitati vozač.
DriverManager.registerDriver () - Vozač implicitno registrira.
P # 5) Što je curenje veze?
Odgovor: Ta se situacija događa kada se veza otvori, a vi je niste zatvorili. Ako postoji blok koda, koji otvara vezu i ne prekida vezu. Kad god se izvrši taj blok koda, veza će curiti iz spremišta veza.
Kad procure sve dostupne veze, neće biti dostupna i aplikacija će se objesiti. Koliko je važno otvoriti vezu, toliko je važno zatvoriti vezu.
P # 6) Je li obvezno zatvoriti vezu?
Odgovor: Ako koristite verzije Jave ispod 7, vezu morate ručno zatvoriti.
Iz verzija iznad Jave 7 vezu možemo automatski zatvoriti otvaranjem JDBC koda veze u zagradama bloka try. Jednom kada program izađe iz bloka try, automatski će zatvoriti vezu.
Zaključak
U ovom uputstvu raspravljali smo o tome kako uspostaviti JDBC vezu. Sada možete izvoditi DB operacije pomoću JDBC u Java programu. Istražili smo 6 osnovnih koraka za povezivanje s bazom podataka. Moramo uvesti pakete u naš Java program da bismo ga koristili.
Nakon što registriramo upravljački program, možemo uspostaviti vezu. Možemo stvoriti i izvršiti SQL izraz pomoću sučelja Statement i dohvatiti rezultate u objektu ResultSet. Kao posljednji korak trebali bismo zatvoriti vezu.
Preporučena literatura
- Java JDBC Vodič: Što je JDBC (povezivanje Java baze podataka)
- Java sučelje i udžbenik sažetka klase s primjerima
- Java JDBC upravljanje transakcijama s primjerom
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Kako koristiti Java ResultSet za preuzimanje podataka
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Uvod u programski jezik Java - Video vodič
- Ispitivanje baze podataka selena (pomoću WebDriver-a i JDBC API-ja)