Atunci cānd dorim sa scriem sau sa citim date dintr-un fisier, prima operatiune care se realizeaza este deschiderea fisierului. Accesul la fisier este direct. Īn cazul fisierului care reprezinta baza de date avem nevoi 232i85c e de un strat intermediar care stie sa citeasca corect datele, dat fiind faptul ca ele sunt pastrate īntr-un anumit format. Deci pentru citirea datelor din baza de date se utilizeaza un anumit protocol. Stratul intermediar care cunoaste acest protocol este reprezentat de driver. Īn concluzie contactul īntre doua componente, aplicatia Java si baza de date, este realizat prin intermediul driver-ului.
Conectarea aplicatiei la baza de date se executa prin intermediul unui obiect de tip Connection. Pentru a obtine conexiunea trebuie sa furnizam adresa, sau altfel spus URL-ul respectivei baze de date. Acest URL reprezinta un mod de identificare a bazei da date īn asa fel īncāt driverul corespunzator recunoaste denumirea si poate stabili o conexiune.
Conectarea aplicatiei la baza de date este o sarcina care revine īn special clasei DriverManager. Aceasta este una dintre principalele clase ale pachetului java.sql. Īn momentul īn care se apeleaza metoda getConnection(). Clasa DriverManager īncearca sa gaseasca un driver care poate sa realizeze conexiunea cu respectiva baza de date. Aceasta clasa mentine o lista a tuturor driverelor īnregistrate pe sistem si la cererea de conectare din partea unei aplicatii verifica raspunsul fiecarui driver din lista la url-ul transmis ca parametru. Schimbul de informatie dintre clasa DriverManager si celelalte drivere, are loc prin intermediul interfetei Driver, interfata pe care trebuie sa o implementeze fiecare driver prin metoda: getConnection(), clasa DriverManager apeleaza metoda connect() din cadrul interfetei Driver, metoda care realizeaza conexiunea reala cu baza de date.
URL-ul transmis ca si parametru la apelul metodei getConnection() contine un sir de caractere cu o semnificatie bine determinata: jdbc.odbc.WebData. Īnainte de a studia semnificatia exacta a componentelor acestui URL sa vedem exact care este definitia URL-urilor.
Un URL - Uniform Resource Locator - reprezinta o modalitate de identificare a resurselor pe Internet. Īn general, atunci cānd navigam pe Internet furnizam navigatorului o cale care specifica localizarea unui fisier sau a unui sistem legat la Internet, de exemplu https://java.sun.com/index.html. Īn alcatuirea unui URL se pot identifica doua parti importante: īn primul rānd este specificat protocolul utilizat pentru accesarea resursei iar mai apoi este furnizata adresa exacta a resursei. Adresa exacta a resursei poate cuprinde inclusiv numele site-ului (sistemului) pe care este localizat fisierul. Protocolul īn cazul exemplului dat este http - Hyper Text Transfer Protocol - iar adresa exacta a resursei este data de java.sun.com/index.html.
Īn cazul URL-urilor JDBC, este vorba despre o cale de identificare a bazelor de date īntr-un mod specific unui anumit driver. Astfel, la furnizarea URL-ului numai un anumit driver stie sa recunoasca URL-ul si sa decodifice informatiile furnizate īn cadrul acestuia. Practic, cei care scriu driverele sunt cei care stabilesc modul īn care va arata URL-ul JDBC care identifica driverul lor. Utilizatorii driverului nu trebuie sa-si faca probleme īn acest sens: se va utiliza URL-ul furnizat odata cu driverul. Rolul JDBC este doar de a recomanda anumite conventii privind modul de alcatuire a unui URL. Ca urmare a faptului ca URL-urile JDBC pot fi utilizate cu un numar mare de drivere este normal ca structura lor sa fie foarte flexibila. Īn primul rānd, URL-urile JDBC permit diferite scheme pentru denumirea bazelor de date. Apoi, URL-urile JDBC permit producatorilor de drivere sa īnglobeze toate informatiile de care au nevoie. Aceasta permite aplicatiilor sa acceseze bazele de date fara ca utilizatorul sa fie nevoit sa recurga la actiuni de administrare a bazei de date. Īn al treilea rānd, URL-urile JDBC permit specificarea unei denumiri logice pentru baza de date si pentru sistemul pe care este localizata baza de date. Maparea denumirii logice īn denumirea fizica este realizata de un anumit serviciu de naming disponibil īn cadrul retelei sau pe sistemul local.
Sintaxa standard pentru un URL JDBC este urmatoarea:
jdbc: < subprotocol > : < subname > |
Se poate observa usor existenta celor trei parti ale unui URL JDBC, parti care au urmatoarea semnificatie:
jdbc reprezinta numele protocolului. Īn cadrul unui URL JDBC vom folosi īntotdeauna protocolul jdbc.
subprotocolul poate reprezenta numele unui driver sau numele unui mecanism de conectare la baza de date. Un exemplu foarte sugestiv pentru denumirea unui subprotocol este odbc. Acest nume este rezervat pentru URL-urile care specifica surse de date de tipul ODBC. Pentru accesarea unei baze de date prin intermediul unui bridge JDBC-ODBC, cazul nostru este demonstrativ - jdbc:odbc:ProDb. Īn aceasta situatie, subprotocolul este odbc iar numele ProDb este denumirea unei surse de date ODBC locale.
Daca cineva doreste sa utilizeze un serviciu de naming atunci respectivul serviciu trebuie furnizat ca protocol. Utilizarea acestui serviciu este necesara atunci cānd numele bazei de date nu reprezinta pe cel real. Īn acest caz URL-ul va arata astfel: jdbc:dnsnaming:ProDb. Aici numele subprotocolului este serviciul de naming DNS. Acest serviciu trebuie sa rezolve numele logic al bazei de date īntr-un nume real care sa fie utilizat pentru conectarea la baza de date.
subname, este cea de-a treia componenta a URL-ului si reprezinta o modalitate de identificare a bazei de date. Sintaxa acestei componente poate varia īn functie de driver si ca urmare poate contine toate informatiile necesare pentru localizarea bazei de date. Īn exemplul nostru ProDb este suficient pentru identificarea sursei de date pe sistemul local. Daca sursa de date se afla pe un alt sistem īn reteaua locala sau chiar pe Internet atunci trebuie sa includem īn cadrul URL-ului JDBC adresa respectivului sistem. Presupunānd ca baza de date se gaseste pe un sistem aflat īn Internet avānd adresa www.utcluj.ro si numele subprotocolului utilizat pentru conectare este dbnet atunci URL-ul pentru conectarea la baza de date va avea forma: jdbc:dbnet://www.utcluj.ro:nrPort/WebData.
Revenind la exemplul nostru, obtinerea conexiunii are loc prin apelul metodei getConnection() a clasei DriveManager.
Connection con = DriveManager.getConnection(url, " ", " "); |
La apelul metodei se transmit trei parametrii. Despre primul dintre acestia, URL-ul JDBC, am discutat mai sus. Urmatorii doi parametrii reprezinta numele utilizatorului care doreste accesarea bazei de date si respectiv parola asociata respectivului utilizator. Īn exemplul de mai sus acesti parametrii au valori nule pentru ca nu s-a cofigurat baza de date pentru a fi protejata.
Exemplu 1:
Utilizarea bridge-ului JDBC-ODBC: |
private void getDBConnection() catch (Exception e) } |
Exemplu 2:
Utilizarea unui ORACLE Thin Driver īn cazul unui client avānd GUI de tip applet Java: |
private void getConnection() catch(Exception s) System.out.println ("Exceptie aparuta in metoda getConnection"); } } |
Exemplu 3
Utilizarea unui MySQL Driver |
private void getConnection() catch (Exception e) } |
|