CATEGORII DOCUMENTE |
Introducere in JDBC
Ce reprezinta JDBC?
JDBC (Java Database Connectivity) este o interfata standard SQL de
acces la baze de date.
JDBC este o Interfata de Programare a Aplicatiilor Java API
destinata procesarii cererilor SQL. Consta dintr-o colectie de clase
si interfete scrise in Java si care permit realizarea de aplicatii
folosind un API java pur.
Cu ajutorul JDBC-ului se pot trimite teoreti cereri SQL oricarei baze
de date relationale.
- furnizeaza acces orientat pe obiecte la bazele de date prin definirea
de clase si interfete care reprezinta obiecte cum ar fi:
Concepte Clasa/clasele sau interfetele
conexiuni la baze de date Connection
instructiuni SQL Statement, PreparedStatement,
CallableStatement
multimi rezultat ResultSet
obiecte mari binare si caracter Blob (Binary Large OBjects),
Clob(Character Large Objects)
drivere de baze de date Driver
manageri de drivere DriverManager
Pachetul care ofera suport pentru lucrul cu baze de date este java.sql.
Ce face JDBC de fapt ?
JDBC permite:
Stabilirea unei conexiuni cu o baza de date
Trimiterea cererilor SQL
Procesarea rezultatelor
JDBC este un API de nivel jos si o baza pentru alte API-uri de nivel
superior
JDBC este o interfata de nivel jos, ceea ce inseamna ca e folosit
pentru a apela comenzi SQL direct.
JDBC - o baza pentru alte API-uri de nivel superior.
- exista cel putin doua API-uri de nivel superior peste JDBC care se
afla in dezvoltare:
- O implementare a limbajului SQL in Java.
Serverele de baze de date implementeaza SQL, un limbaj realizat
in exclusiv pentru folosirea in baze de date. J
JDBC cere ca cererile SQL sa fie trimise ca siruri de caractere
metodelor Java. Un preprocesor SQL permite in schimb unui
programator sa combine cererile SQL direct cu Java: de exemplu, o
variabila Java poate fi folosita intr-o cerere SQL pentru a primi sau
transmite valori SQL. Preprocesorul SQL inclus transpune acest
amestec Java/SQL in apeluri JDBC.
- O mapare directa a tabelelor din bazele de date relationale in
clase Java: fiecare inregistrare dintr-o tabela devine o instanta a
acelei clase, si fiecare valoare din coloana corespunde unui atribut
al acelei instante. Programatorii pot dupa aceea opera direct asupra
obiectelor Java.
Api-ul JDBC - Modele cu doua si cu trei componente pentru acces la BD
1. Intr-un model cu doua componente, un applet Java sau
aplicatie comunica direct cu baza de date.
configuratie client-server
reteaua poate fi un intranet sau Internet-ul.
2. - modelul cu trei componente:
componenta intermediara permite controlul asupra accesului si
tipul de interogari care se pot face asupra datelor.
utilizatorul poate folosi un API de nivel superior care e transpus
de componenta intermediara in apeluri de nivel jos.
Pana acum componenta intermediara a fost scrisa in limbaje cum ar fi C sau C++, care
ofera viteze superioare. Oricum, cu introducerea compilatoarelor optimizate care transpun codul binar Java in cod specific platformelor, a devenit practica implementarea
componentei intermediare in Java. Acesta este un mare avantaj, folosind calitatile
limbajului Java: robustete, rularea pe mai multe fire de executie, precum si chestiuni de
securitate. JDBC-ul e important pentru a permite accesul dintr-un componenta
intermediara
Structura JDBC-ului:
JavaSoft distribuie trei componente JDBC odata cu kitul de dezvoltare (JDK) :
. managerul de drivere ("JDBC driver manager")
. pachetul de testare a driverelor ("JDBC driver test suite")
. puntea JDBC-ODBC ("JDBC-ODBC bridge")
Managerul de drivere este componenta de baza a arhitecturii JDBC.
Functia sa de baza este sa conecteze aplicatiile Java la driverul JDBC.
Pachetul de testare a driverelor aduce siguranta ca driverele JDBC vor
rula aplicatiile. Numai driverele care trec testul driverelor JDBC se pot numi
conforme cu JDBC.
Puntea JDBC-ODBC permite driverelor ODBC sa fie folosite ca drivere
JDBC.
Tipuri de drivere JDBC
Driver ODBC - extensie a puntii JDBC-ODBC Puntea
JDBC-ODBC permite acces prin drivere ODBC. De notat:
codul binar ODBC trebuie sa fie incarcat pe fiecare masina
client care foloseste acest driver. Ca rezultat, acest tip de
drivere e cel mai potrivit pentru reteaua unei firme, acolo
unde instalarile suplimentare pe masinile client nu sunt o
problema, sau pentru cod pe server, in cadrul arhitecturii cu
trei componente
Apeluri native - driver Java Acest tip de drivere
converteste apelurile JDBC in apeluri interne pe serverele
de baze de date (Oracle, Sybase, Informix, DB2, .) Ca si
categoria anterioara, acest tip de drivere necesita ca o parte
din cod sa fie incarcat pe fiecare masina client.
Driver Java de retea JDBC pur Acest tip de drivere
converteste apelurile JDBC in protocoale independente de
BD, acestea apoi sunt convertite in protocoale specifice
bazei de date de catre un server. Acest server de retea
central e capabil sa conecteze clientii Java la diferite baze
de date.
Aceasta e cea mai flexibila implementare a JDBC-ului.
Driver Java - protocol nativ Acest tip de drivere
converteste apelurile JDBC direct in protocolul de retea
folosit de serverul de daze de date. Aceasta permite apeluri
directe de pe masina client la baza de date si e o solutie
practica pentru accesul din Internet.
Accesarea unei BD folosind JDBC:
1. inregistrarea driverului JDBC
2. stabilirea unei conexiuni catre BD
3. executia de instructiuni SQL
4. procesarea rezultatelor
5. inchiderea conexiunii cu BD
Inregistrarea driverului JDBC
. folosind gestionarul de drivere DriverManager
Clasa DriverManager este componenta de organizare a JDBC-lui, si lucreaza
intre utilizator si drivere. Tine o evidenta cu toate driverele disponibile si se
ocupa cu stabilirea unei conexiuni intre baza de date si driver-ul
corespunzator.
Metoda DriverManager.registerDriver(new TipDriver())
Exemplu:
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
. pentru incarcarea dinamica:
Class.forName('TipDriver');
Class.forName('TipDriver').newInstance();
Exemplu: Class.forName('sun.jdbc.odbc.JdbcOdbcDriver');
- arunca o exceptie de tipul ClassNotFoundException.
stabilirea unei conexiuni catre BD
Conexiunea cu baza de date se realizeaza printr-un obiect
Connection. O sesiune a conexiunii reprezinta clauzele SQL care
sunt executate si rezultatele care sunt returnate prin acea
conexiune.
- metoda getConnection a clasei DriverManager .
Clasa Driver Manager mentine o lista cu clasele Driver inregistrate, si atunci
cand metoda getConnection e apelata, verifica cu fiecare driver din lista
daca se poate conecta la baza de date.
Metoda connect a clasei Driver foloseste acest URL, pentru a stabili efectiv
conexiunea.
URL ("Uniform Resource Locator") - contine informatia necesara pentru a
localiza o resursa pe Internet, el poate fi vazut ca o adresa.
Sintaxa standard pentru URL-ul unei baze de date este:
jdbc:<subprotocol>:<nume>
Daca baza de date va fi accesata de pe Internet, atunci URL-ul:
//numegazda:port/subnume.
Cele mai cunoscute drivere JDBC au sintaxa:
ODBC - jdbc:odbc:numeSursaDate
MySQL - jdbc:mysql://server[:port]/numeBazaDate
Oracle - jdbc:oracle:thin:@server:port:numeInstanta
Metoda getConnection() din clasa DriverManager:
Connection c = DriverManager.getConnection(url);
Connection c = DriverManager.getConnection(url,username, password);
Exemplu:
Connection conexiuneBazaDate = DriverManager.getConnection(
'jdbc:mysql://localhost/studenti');
String url='jdbc:odbc:test';
Connection conexiune = DriverManager.getConnection(url);
String user='UserJDBC';
String parola='parolaJDBC';
Connection conex1= DriverManager.getConnection(url,user,parola);
3. executia de instructiuni SQL
JDBC-ul pune la dispozitie trei clase pentru trimiterea comenzilor SQL bazei de date
si trei metode ale interfetei Connection prin care se pot crea instante ale acestor clase.
Aceste clase si metodele care le creeaza sunt:
- Clasa Statement si metoda createStatement(). Un obiect de tip Statement este
folosit pentru trimiterea comenzilor SQL simple, fara parametri.
- Clasa PreparedStatement si metoda prepareStatement(). Un obiect de tip
PreparedStatement este folosit pentru interogari SQL care preiau mai mult de
un argument de intrare (IN). PreparedStatement are un grup de metode care
seteaza valoarea parametrilor de intrare, care sunt trimise bazei de date la
momentul executiei. Instantele clasei PreparedStatement extind clasa
Statement si astfel includ si metodele clasei Statement.
- Clasa CallableStatement si metoda prepareCall(). Obiectele CallableStatement
sunt folosite pentru a executa proceduri stocate pe serverul DBMS (un grup de
comenzi SQL apelat dupa nume, similar cu apelul unei functii). Un obiect
CallableStatement mosteneste metodele de manevrare ale parametrilor IN de la
PreparedStatement si adauga metode pentru lucru cu parametrii OUT si
INOUT
- O data realizata conexiunea cu DriverManager.getConection(), se poate folosi
obiectul Connection rezultat pentru a se crea un obiect de tip Statements, cu ajutorul
caruia putem trimite secvente SQL catre baza de date.
Statement ob_Connection.createStatement();
Exemplu:
Statement instructiune = conexiuneBazaDate.createStatement();
O instructiune poate face anumite operatii pe baza de date, cum ar fi cautare, inserare,
actualizare sau stergere. Cele mai uzuale comenzi SQL sunt cele folosite pentru:
1. interogarea bazei de date (SELECT) si
2. actualizarea bazei de date (INSERT, UPDATE, DELETE)
Metodele :
- executeQuery() (ResultSet )
- executeUpdate()
Exemple
Connection c = DriverManager.getConnection(url);
Statement s = c.createStatement();
ResultSet r = s.executeQuery('SELECT * FROM un_tabel ORDER BY
o_coloana');
s.executeUpdate('DELETE * FROM un_tabel');
ResultSet rs=s.executeQuery('select * from studenti');
String sql = 'insert into studenti values (1, 'Popescu', 'Ion', 9)';
ResultSet rs = s.executeUpdate(sql);
4. Procesarea rezultatelor
- metoda next()
Exemplu
while (rs.next())
5. Inchiderea unei conexiuni la o baza de date
- metoda close() aplicata obiectelor Statement, ResultSet si Connection.
Exemplu:
try
catch (SQLException e)
finally
catch (SQLException ignored)
Exemplu:
Urmatorul program exemplifica accesul la inregistrarile unei tabele create in
Microsoft Acces printr-o punte JDBC-ODBC.
Pentru accesarea dintr-o aplicatie Java a unei anumite baze de date (create de
exemplu in Microsoft Access, Dbase, Excel, FoxPro, Oracle) se impune efectuarea
urmatoarelor operatii pentru a o introduce ca sursa de date in ODBC:
- din 'Control Panel' se alege Administrative Tools, apoi Data Sources(ODBC).
- in User DSN se acceseaza butonul 'Add', se selecteaza 'Driver do Microsoft
Access(*.mdb)' (de exemplu pentru baze de date Access) si se apasa butonul
'FINISH'.
- in 'DATA SOURCE NAME' se va introduce numele bazei de date (din
programul Java jdbc:odbc:xxxx), iar la optiunea select se va selecta fisierul
baza de date, dupa care se selecteaza 'Ok'.
import java.sql.*;
import java.io.*;
public class TestJDBC
catch(ClassNotFoundException e)
try
catch(SQLException e)
try
c.close();
catch(SQLException e)
try
catch(SQLException e)
try
c.close();
catch(SQLException e)
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1354
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved