Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Introducere in JDBC

sql



+ Font mai mare | - Font mai mic



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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1354
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved