java jdbc connection tutorial with programming example
Tento výukový program Pripojenie JDBC vysvetľuje základné kroky k databáze s príkladmi a poskytuje pripojovacie reťazce JDBC pre rôzne databázy:
beta testovanie je posledná fáza procesu testovania.
V predchádzajúcom návode na Séria výukových programov JDBC , naučili sme sa komponenty, architektúru a typy ovládačov v prostredí Java Database Connectivity (JDBC).
V tomto výučbe sa budeme zaoberať krokmi pripojenia k databázam pomocou JDBC. Tento tutoriál vám ukáže, ako vykonať pripojenie JDBC a ako vykonať operácie s databázou. JDBC API funguje ako rozhranie medzi programom Java a databázou.
Na konci tohto tutoriálu budete schopní písať programy Java pre pripojenie k databázam a vykonávanie operácií DB.
Čo sa dozviete:
Kroky pripojenia JDBC
Existuje 6 základných krokov na pripojenie k JDBC. Sú uvedení na nasledujúcom obrázku:
# 1) Import balíkov
Najprv musíme importovať existujúce balíčky, aby sme ich mohli použiť v našom programe Java. Import zabezpečí, že pre program budú k dispozícii triedy JDBC API. Potom môžeme použiť triedy a podtriedy balíkov.
Bez ohľadu na ovládač JDBC pridajte do programu Java nasledujúci príkaz na import.
import java.sql.*;
Importujte ďalšie triedy na základe funkcií, ktoré v programe použijete. Stiahnite si príslušné súbory Jar pre databázu, ktorú použijete v programe.
Pozrite si predchádzajúci návod pre odkazy na stiahnutie súborov Jar pre vašu databázu.
JDBC API 4.0 poskytuje hlavne 2 dôležité balíčky:
- java.sql
- javax.sql
(i) balík java.sql
Tento balík poskytuje triedy a rozhrania na vykonávanie väčšiny funkcií JDBC, ako je vytváranie a vykonávanie dotazov SQL.
Triedy / rozhrania | Popis |
---|---|
DriverManager | Poskytuje základnú službu na správu sady ovládačov JDBC |
BLOB | Predstavuje hodnotu SQL Blob v programe Java |
Vyvolateľné vyhlásenie | Používa sa na vykonávanie uložených procedúr SQL |
CLOB | Predstavuje hodnotu SQL Clob v programe Java |
Pripojenie | Vytvára spojenie (reláciu) s konkrétnou databázou |
Dátum | Poskytuje podporu pre typ Date SQL |
Vodič | Vytvára inštanciu Driver with Driver Manager |
ParameterMetaData | Je to objekt, ktorý možno použiť na získanie informácií o typoch a vlastnostiach každého parametra v objekte PreparedStatement |
Pripravené vyhlásenie | Používa sa na vytvorenie a vykonanie parametrizovaného dotazu v programe Java |
Sada výsledkov | Používa sa na prístup k výsledku po riadkoch |
ResultSetMetaData | Používa sa na získanie informácií o typoch a vlastnostiach stĺpcov v objekte ResultSet |
RowId | Predstavuje hodnotu SQL ROWID |
Savepoint | Predstavuje záchranný bod v transakcii |
SQLData | Používa sa na mapovanie typu User Defined Type (UDT) SQL na triedu v programe Java |
SQLXML | Predstavuje typ SQL XML |
Vyhlásenie | Používa sa na vykonávanie statického príkazu SQL |
DriverPropertyInfo | Poskytuje vlastnosti ovládača na vytvorenie spojenia |
SQLException | Poskytuje informácie o chybách v databáze |
SQLTimeoutException | Je to podtrieda SQLException vyvolaná, keď vypršal časový limit určený príkazom |
SQLWarning | Je to výnimka, ktorá poskytuje informácie o varovaniach o prístupe k databáze |
Struct | Jedná sa o štandardné mapovanie v programe Java pre štruktúrovaný typ SQL |
(ii) balík javax.sql
Jedná sa o rozšírenie JDBC API a poskytuje prístup k údajom na strane servera a ich spracovanie v programe Java.
Triedy / rozhrania | Popis |
---|---|
ConnectionEvent | Poskytuje informácie o výskyte udalostí súvisiacich s pripojením |
CommonDataSource | Jedná sa o rozhranie, ktoré definuje bežné metódy medzi DataSource, XADataSource a ConnectionPoolDataSource. |
ConnectionPoolDataSource | Je to továreň na objekty PooledConnection |
Zdroj dát | Je to továreň na pripojenia k fyzickému zdroju údajov, ktorý objekt predstavuje |
PooledConnection | Používa sa na správu skupiny pripojení |
Sada riadkov | Poskytuje podporu rozhrania JDBC API pre komponentový model Java Beans |
RowSetMetadata | Má informácie o stĺpcoch v objekte RowSet |
ConnectionEventListener | Používa sa na registráciu udalostí objektu PooledConnection |
RowSetEvent | Vygeneruje sa, keď dôjde k udalosti v objekte Rowset |
StatementEvent | Odošle sa všetkým StatementEventListeners, ktoré boli zaregistrované s vygenerovaným PooledConnection |
# 2) Načítajte ovládač
Najskôr by sme mali načítať / zaregistrovať ovládač v programe pred pripojením k databáze. Musíte ho zaregistrovať iba raz pre každú databázu v programe.
Ovládač môžeme načítať nasledujúcimi dvoma spôsobmi:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
Týmto spôsobom sa súbor triedy vodiča za behu načíta do pamäte. Implicitne načíta vodič. Počas načítania sa vodič automaticky zaregistruje v JDBC.
Názov DB | Názov ovládača 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 |
Poznámka: Metóda forName () je platná iba pre virtuálne stroje vyhovujúce JDK.
(ii) DriverManager.registerDriver ()
DriverManager je vstavaná trieda, ktorá je k dispozícii v balíku java.sql. Funguje ako sprostredkovateľ medzi aplikáciou Java a databázou, ktorú chcete pripojiť. Pred pripojením k databáze musíte ovládač zaregistrovať v DriverManager. Hlavnou funkciou aplikácie DriverManager je načítanie triedy ovládačov databázy a vytvorenie spojenia s databázou DB.
Verejný statický neplatný register Vodič (vodič) - Táto metóda zaregistruje ovládač v Správcovi ovládačov. Ak je vodič už zaregistrovaný, nepodnikne žiadne kroky.
- Bude vrhať Výnimka SQLE ak nastane chyba v databáze.
- Bude vrhať NullPointerException ak je vodič nulový.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
Takto môžete zaregistrovať ovládač pre svoju databázu odovzdaním ako parametra.
# 3) Nadviazanie spojenia
Po načítaní ovládača je ďalším krokom vytvorenie a vytvorenie spojenia. Keď je to potrebné, balíčky sa importujú a ovládače sa načítajú a zaregistrujú. Potom môžeme pokračovať v nadviazaní databázového pripojenia.
Trieda DriverManager má metódu getConnection, túto metódu použijeme na získanie spojenia s databázou. Ak chcete zavolať metódu getConnection (), musíme odovzdať 3 parametre. Tri parametre sú reťazcový údajový typ URL, používateľské meno a heslo na prístup do databázy.
Metóda getConnection () je preťažená metóda. Tieto dve metódy sú:
- getConnection (URL, užívateľské meno, heslo); - Má 3 parametre URL, užívateľské meno, heslo.
- getConnection (URL); - Má iba jeden parameter. URL má tiež užívateľské meno a heslo.
V nasledujúcej tabuľke sú uvedené pripojovacie reťazce JDBC pre rôzne databázy:
Databáza | Pripojovací reťazec / URL 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; DatabaseName = |
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 |
Príklad:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Tu v tomto príklade
- tenký odkazuje na typ ovládača.
- localhost je miesto, kde je spustená databáza Oracle.
- 1521 je číslo portu na pripojenie k DB.
- vozidlo - SID
- Systém - Používateľské meno na pripojenie k databáze Oracle.
- Pass123 @ - Heslo
# 4) Vytvorte a vykonajte výpis
Po nadviazaní spojenia môžeme komunikovať s pripojenou databázou. Najskôr musíme vytvoriť príkaz na vykonanie dotazu SQL a potom vykonať príkaz.
(i) Vytvorenie výpisu
Teraz vytvoríme objekt vyhlásenia, ktorý spustí dotaz s pripojenou databázou. Používame metódu createStatement z Pripojenie triedy na vytvorenie dotazu.
V balíku java.sql sú k dispozícii 3 rozhrania príkazov. Ďalej sú vysvetlené:
vyhlásenie
Toto rozhranie sa používa na implementáciu jednoduchých príkazov SQL bez parametrov. Vráti objekt ResultSet.
Statement statemnt1 = conn.createStatement();
b) Pripravené vyhlásenie
Toto rozhranie PreparedStatement rozširuje rozhranie príkazov. Má teda viac funkcií ako rozhranie Statement. Používa sa na implementáciu parametrizovaných a predkompilovaných príkazov SQL. Výkonnosť aplikácie sa zvyšuje, pretože dopyt sa zostavuje iba raz.
Je ľahké znovu použiť toto rozhranie s novým parametrom. Podporuje parameter IN. Aj tento príkaz môžeme použiť bez akýchkoľvek parametrov.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
c) Vyhlásenie Callable
Rozhranie CallableStatement rozširuje rozhranie PreparedStatement. Má teda viac funkcií ako rozhranie PreparedStatement. Používa sa na implementáciu parametrizovaného príkazu SQL, ktorý vyvoláva procedúru alebo funkciu v databáze. Uložená procedúra funguje ako metóda alebo funkcia v triede. Podporuje parametre IN a OUT.
Inštancia CallableStatement sa vytvorí volaním metódy prepareCall objektu Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ii) Vykonať dopyt
Existujú 4 dôležité metódy na vykonanie dotazu v rozhraní príkazov. Ďalej sú vysvetlené:
- ResultSet executeQuery (reťazec sql)
- int executeUpdate (reťazec sql)
- booleovské spustenie (reťazec sql)
- int () executeBatch ()
a) ResultSet executeQuery (reťazec sql)
Metóda executeQuery () v rozhraní príkazu sa používa na vykonanie dotazu SQL a na získanie hodnôt z databázy DB. Vráti objekt ResultSet. Normálne túto metódu použijeme pre dotaz SELECT.
b) executeUpdate (reťazec sql)
Metóda executeUpdate () sa používa na vykonávanie dotazov so zadanou hodnotou, ako sú príkazy INSERT, UPDATE, DELETE (príkazy DML) alebo DDL, ktoré nevracajú nič. Väčšinou použijeme túto metódu na vkladanie a aktualizáciu.
c) vykonať (reťazec sql)
Na vykonanie dotazu SQL sa používa metóda execute (). Vracia sa to pravda ak vykoná dotaz SELECT. A vráti sa nepravdivé ak vykoná dotaz INSERT alebo UPDATE.
d) executeBatch ()
Táto metóda sa používa na vykonanie dávky dotazov SQL do databázy a ak sa všetky dotazy úspešne vykonajú, vráti pole počtu aktualizácií. Touto metódou vložíme / aktualizujeme väčšinu záznamov.
# 5) Načítanie výsledkov
Keď vykonáme dotazy pomocou metódy executeQuery (), výsledok sa uloží do objektu ResultSet. Vrátený objekt ResultSet nikdy nebude mať hodnotu null, aj keď v tabuľke nie je žiadny zodpovedajúci záznam. Objekt ResultSet sa používa na prístup k údajom získaným z databázy.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
Pre dotaz SELECT môžeme použiť metódu executeQuery (). Keď sa niekto pokúsi vykonať vkladací / aktualizačný dotaz, vyhodí to SQLExecption so správou „ na aktualizáciu nemožno použiť metódu executeQuery “.
Objekt ResultSet ukazuje na aktuálny riadok v sade výsledkov. Ak chcete iterovať údaje v objekte ResultSet, zavolajte metódu next () v cykle while. Ak už niet záznamu, ktorý by sa dal prečítať, vráti hodnotu FALSE.
ResultSet možno použiť aj na aktualizáciu údajov v databáze DB. Údaje môžeme získať z ResultSet pomocou metód getra, ako sú getInt (), getString (), getDate (). Ako parameter musíme zadať index alebo názov stĺpca, aby sme hodnoty dostali pomocou metód Getter.
bezplatný zálohovací program pre Windows 7
O ResultSete sa dozvieme viac v nasledujúcom návode.
# 6) Ukončite pripojenie
Nakoniec sme skončili s manipuláciou s dátami v DB. Teraz môžeme ukončiť pripojenie JDBC. Musíme sa uistiť, že sme zdroj uzavreli potom, ako sme ho použili. Ak ich nezatvoríme správne, môžeme skončiť mimo spojenia.
Keď zatvoríme objekt pripojenia, objekty Statement a ResultSet sa automaticky zatvoria.
conn.close();
Od Javy 7 a ďalej môžeme automaticky uzatvárať spojenia JDBC pomocou bloku try-catch. Pripojenie JDBC by sa malo otvoriť v zátvorke bloku try. V bloku try môžete vykonávať databázové pripojenia normálne ako my.
Akonáhle vykonanie ukončí blok try, automaticky sa ukončí pripojenie. V takom prípade nemusíme ukončiť pripojenie volaním metódy conn.close v programe Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Príklad pripojenia Java JDBC
V tomto príklade uvidíte, ako implementovať 6 základných krokov na pripojenie k databáze pomocou programu JDBC v programe Java.
Vytvorte tabuľku
Predtým najskôr vytvorte jednu tabuľku a pridajte do nej nejaké záznamy.
Nižšie je uvedený dotaz SQL na vytvorenie tabuľky.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
V Oracle DB bola vytvorená tabuľka „employee_details“.
Vložte údaje do tabuľky
Pomocou nasledujúcich dotazov vložte údaje do tabuľky „employee_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
Stiahnite si súbor JDBC jar a importujte ho do projektu 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(); } } }
Výkon:
Kľúčové body, ktoré je potrebné poznamenať:
- Najskôr musíme importovať balíčky, ktoré budeme používať v našom programe Java pre pripojenie JDBC. V balíkoch teda môžeme používať triedy, podtriedy a rozhrania.
- Pred pripojením je potrebné zaregistrovať alebo načítať ovládač pomocou aplikácie DriverManager.
- Po zaregistrovaní ovládača môžeme nadviazať spojenie a vykonať príslušné operácie.
- Pomocou príkazového rozhrania môžeme vytvoriť a vykonať dotaz SQL. Pre jednoduchý dotaz SQL môžeme použiť rozhranie Statement. Na vkladanie / aktualizáciu / mazanie môžeme použiť rozhranie PreparedStatement.
- Po vykonaní príkazu sa výsledky uložia do objektu ResultSet. Výsledky získame z objektu ResultSet pomocou metódy next () pre viac ako 1 záznam.
- Po dokončení operácie s databázou musíme ukončiť pripojenie. Aby bol zdroj k dispozícii na použitie pre ostatných.
často kladené otázky
Otázka č. 1) Aké sú základné kroky na pripojenie k databáze DB v Jave?
Odpoveď: Existuje 6 základných krokov pre pripojenie k DB v Jave.
Oni sú:
- Import-Package
- Načítajte ovládač
- Nadviazať spojenie
- Vytvorte a vykonajte výpis
- Načítať výsledky
- Ukončiť pripojenie
Otázka 2) Aký je rozdiel medzi dátovými typmi BLOB a CLOB v JDBC?
Odpoveď:
BLOB sa používa na uchovanie binárneho typu údajov. Veľkosť úložiska sa môže líšiť v závislosti od databáz Príklad: obrázky, hlas, video.
CLOB sa používa na uchovanie znakového typu údajov. Rovnako ako CLOB, aj úložný priestor sa môže líšiť v závislosti od DB. Príklad: súbory.
Otázka č. 3) Ktorá metóda triedy DriverManager sa používa na nadviazanie spojenia s databázou DB?
Odpoveď: Trieda DriverManager má metódu getConnection (), ktorá sa používa na nadviazanie spojenia s databázou DB.
Otázka č. 4) Aký je rozdiel medzi Class.forName () a DriverManager.registerDriver ()?
Odpoveď: Class.forName () - Najskôr načíta ovládač do pamäte a potom zaregistruje príslušný ovládač v Správcovi ovládačov. Potom vytvorí objekt ovládača na vykonanie spojenia JDBC. Načíta to vyslovene ovládač.
DriverManager.registerDriver () - Vodič zaregistruje implicitne.
Otázka č. 5) Čo je únik spojenia?
Odpoveď: Táto situácia nastane, keď sa otvorí pripojenie a vy ste ho nezavreli. Ak existuje blok kódu, ktorý otvorí pripojenie a neukončí ho. Kedykoľvek sa tento blok kódu vykoná, dôjde k úniku spojenia z oblasti pripojení.
Po úniku všetkých dostupných pripojení nebude k dispozícii žiadne pripojenie a aplikácia bude visieť. Nakoľko je dôležité otvoriť spojenie, nakoľko je dôležité ho uzavrieť.
Otázka č. 6) Je nevyhnutné ukončiť pripojenie?
Odpoveď: Ak používate verzie Java pod 7, musíte pripojenie ukončiť manuálne.
Z verzií nad Java 7 môžeme pripojenie uzavrieť automaticky otvorením kódu pripojenia JDBC v zátvorkách bloku try. Akonáhle program opustí blok try, automaticky ukončí pripojenie.
Záver
V tomto tutoriáli sme diskutovali o tom, ako nadviazať spojenie JDBC. Teraz môžete vykonávať operácie DB pomocou JDBC v programe Java. Preskúmali sme 6 základných krokov pri pripojení k databáze. Aby sme ho mohli používať, musíme importovať balíčky z nášho Java programu.
Po zaregistrovaní ovládača môžeme nadviazať spojenie. Môžeme vytvoriť a vykonať príkaz SQL pomocou rozhrania Statement a načítať výsledky v objekte ResultSet. Ako posledný krok by sme mali uzavrieť spojenie.
Odporúčané čítanie
- Výukový program Java JDBC: Čo je JDBC (Java Database Connectivity)
- Výukový program pre rozhranie Java a abstraktnú triedu s príkladmi
- Správa transakcií Java JDBC s príkladom
- JDBC DriverManager, JDBC PreparedStatement And Statement
- JDBC ResultSet: Ako používať Java ResultSet na načítanie údajov
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Úvod do programovacieho jazyka Java - videonávod
- Testovanie databázy selénu (pomocou WebDriver a JDBC API)