PROCESAREA DATELOR - 432x.ncss.ro432x.ncss.ro/Anul II/PD/Curs/Curs 13.pdf · dr. ing. liviu perniu...

Post on 05-Feb-2018

223 views 2 download

Transcript of PROCESAREA DATELOR - 432x.ncss.ro432x.ncss.ro/Anul II/PD/Curs/Curs 13.pdf · dr. ing. liviu perniu...

Dr. ing. Liviu PERNIU

PROCESAREADATELOR

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSOLE DB (Object Linking and Embedding Database)OLE DB (Object Linking and Embedding Database)

– este o interfaţă de programare a aplicaţiilor creată în scopul accesării diferitelor tipuri de date înmagazinate într-un format standard

– este o interfaţă de programare a aplicaţiilor creată în scopul accesării diferitelor tipuri de date înmagazinate într-un format standard

– constituie un set de interfeţe implementate prin intermediul tehnologiei COM

– constituie un set de interfeţe implementate prin intermediul tehnologiei COM

– nu are nici o legătură cu tehnologia OLE– nu are nici o legătură cu tehnologia OLE

– a fost creată în scopul înlocuirii ODBC– a fost creată în scopul înlocuirii ODBC

– dezvoltă caracteristicile ODBC în scopul realizării de legături şi cu alte tipuri de baze de date decât cele relaţionale (de exemplu bazele de date orientate spre obiecte) sau chiar cu foi de calcul care nu implementează în mod obligatoriu limbajul SQL

– dezvoltă caracteristicile ODBC în scopul realizării de legături şi cu alte tipuri de baze de date decât cele relaţionale (de exemplu bazele de date orientate spre obiecte) sau chiar cu foi de calcul care nu implementează în mod obligatoriu limbajul SQL

– separă datele de aplicaţii care trebuie să primească accesul la acestea prin intermediul unui set de concepte cum ar fi, surse de date, sesiuni, comenzi sau seturi de înregistrări

– separă datele de aplicaţii care trebuie să primească accesul la acestea prin intermediul unui set de concepte cum ar fi, surse de date, sesiuni, comenzi sau seturi de înregistrări

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSOLE DB (Object Linking and Embedding Database)OLE DB (Object Linking and Embedding Database)

Obiectele COM folosite în componenta OLE DBObiectele COM folosite în componenta OLE DB

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSOLE DB (Object Linking and Embedding Database)OLE DB (Object Linking and Embedding Database)

– o serie de aplicaţii trebuie să obţină accesul la diverse tipuri şi surse de date nefiind nevoie să se cunoască metodele de acces în funcţie de tehnologia folosită

– o serie de aplicaţii trebuie să obţină accesul la diverse tipuri şi surse de date nefiind nevoie să se cunoască metodele de acces în funcţie de tehnologia folosită

– are două categorii de utilizatori: consumatori şi furnizori

– are două categorii de utilizatori: consumatori şi furnizori

– consumatorii sunt aplicaţiile care trebuie să primească accesul la date

– consumatorii sunt aplicaţiile care trebuie să primească accesul la date

– furnizorii sunt componentele software care expun interfeţele OLE DB cu ajutorul obiectelor COM prin intermediul cărora furnizează datele consumatorilor

– furnizorii sunt componentele software care expun interfeţele OLE DB cu ajutorul obiectelor COM prin intermediul cărora furnizează datele consumatorilor

Arhitectura OLE DBArhitectura OLE DB

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

– este o interfaţă nativă ce poate fi accesată prin intermediul unui limbaj de programare obişnuit (de obicei acesta este C) şi care poate efectua apeluri către o bibliotecă locală

– este o interfaţă nativă ce poate fi accesată prin intermediul unui limbaj de programare obişnuit (de obicei acesta este C) şi care poate efectua apeluri către o bibliotecă locală

– pentru fiecare bază de date care se accesează este necesar un modul separat sau driver

– pentru fiecare bază de date care se accesează este necesar un modul separat sau driver

– funcţiile din interfaţa ODBC de programare a aplicaţiilor sunt implementate prin intermediul driverelor specifice fiecărui tip de bază de date accesat

– funcţiile din interfaţa ODBC de programare a aplicaţiilor sunt implementate prin intermediul driverelor specifice fiecărui tip de bază de date accesat

– ODBC permite programelor să folosească cereri SQL ce sunt adresate bazelor de date fără a avea cunoştinţe despre interfeţele specifice ale acestora

– ODBC permite programelor să folosească cereri SQL ce sunt adresate bazelor de date fără a avea cunoştinţe despre interfeţele specifice ale acestora

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

– interfaţa de programare a aplicaţiilor este independentă de sistemul de gestiune a bazei de date folosit sau de sistemul de operare

– interfaţa de programare a aplicaţiilor este independentă de sistemul de gestiune a bazei de date folosit sau de sistemul de operare

– funcţiile din cadrul interfeţei de programare a aplicaţiilor sunt implementate de către fiecare producător în mod specific

– funcţiile din cadrul interfeţei de programare a aplicaţiilor sunt implementate de către fiecare producător în mod specific

– aplicaţiile apelează funcţiile din cadrul driverelor pentru a obţine accesul la date indiferent de tipul bazei de date

– aplicaţiile apelează funcţiile din cadrul driverelor pentru a obţine accesul la date indiferent de tipul bazei de date

– Microsoft pune la dispoziţia utilizatorilor un set de drivere, dar orice utilizator poate să-şi creeze propriul driver de aplicaţie ODBC

– Microsoft pune la dispoziţia utilizatorilor un set de drivere, dar orice utilizator poate să-şi creeze propriul driver de aplicaţie ODBC

– implementarea ODBC dispune de una sau mai multe aplicaţii, o bibliotecă principală ODBC şi unul sau mai multe drivere de baze de date

– implementarea ODBC dispune de una sau mai multe aplicaţii, o bibliotecă principală ODBC şi unul sau mai multe drivere de baze de date

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Arhitectura ODBCArhitectura ODBC

Aplicatia

Driver Manager

Interfata ODBC de programare a aplicatiilor

Driver DriverDriver

Interfata ODBC de programare a aplicatiilor

Sursa de date

Sursa de date

Sursa de date

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Arhitectura ODBCArhitectura ODBC

• Aplicaţia. Efectuează prelucrări şi apelează funcţii ODBC pentru a trimite cereri SQL şi a obţine rezultate.

• Driver Manager. Încarcă şi descarcă drivere în funcţie de comportamentul aplicaţiei. Prelucrează apelurile de funcţii ODBC sau le transferă unui driver.

• Driver. Prelucrează apelurile de funcţii ODBC, trimite cereri SQL către o sursă de date specificată, returnând rezultatele aplicaţiei. Dacă este necesar, driverul modifică cererile aplicaţiei, astfel încât acestea să corespundă din punct de vedere sintactic sistemului de gestiune a bazelor de date cu care intră în legătură.

• Sursa de date. Conţine datele pe care utilizatorul doreşte să le acceseze împreună cu sistemul de operare, sistemul de gestiune a bazelor de date şi platforma de operare pe reţea (dacă este necesară) utilizate pentru accesarea respectivului sistem de gestiune a bazelor de date.

• Aplicaţia. Efectuează prelucrări şi apelează funcţii ODBC pentru a trimite cereri SQL şi a obţine rezultate.

• Driver Manager. Încarcă şi descarcă drivere în funcţie de comportamentul aplicaţiei. Prelucrează apelurile de funcţii ODBC sau le transferă unui driver.

• Driver. Prelucrează apelurile de funcţii ODBC, trimite cereri SQL către o sursă de date specificată, returnând rezultatele aplicaţiei. Dacă este necesar, driverul modifică cererile aplicaţiei, astfel încât acestea să corespundă din punct de vedere sintactic sistemului de gestiune a bazelor de date cu care intră în legătură.

• Sursa de date. Conţine datele pe care utilizatorul doreşte să le acceseze împreună cu sistemul de operare, sistemul de gestiune a bazelor de date şi platforma de operare pe reţea (dacă este necesară) utilizate pentru accesarea respectivului sistem de gestiune a bazelor de date.

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Arhitectura ODBCArhitectura ODBC

– pot exista mai multe drivere şi surse de date ce permit aplicaţiilor să acceseze simultan date ce provin din mai multe surse de date

– pot exista mai multe drivere şi surse de date ce permit aplicaţiilor să acceseze simultan date ce provin din mai multe surse de date

– interfaţa ODBC de programare a aplicaţiilor se foloseşte în două locuri: între aplicaţie şi Driver Manager şi între Driver Manager şi fiecare driver în parte

– interfaţa ODBC de programare a aplicaţiilor se foloseşte în două locuri: între aplicaţie şi Driver Manager şi între Driver Manager şi fiecare driver în parte

– interfaţa dintre Driver Manager şi drivere este numită uneori ServiceProvider Interface (SPI)

– interfaţa dintre Driver Manager şi drivere este numită uneori ServiceProvider Interface (SPI)

– pentru ODBC, interfaţa de programare a aplicaţiilor şi interfaţa SPI sunt una şi aceeaşi, ceea ce înseamnă faptul că Driver Manager şi fiecare dintre drivere prezintă aceeaşi interfaţă către aceleaşi funcţii

– pentru ODBC, interfaţa de programare a aplicaţiilor şi interfaţa SPI sunt una şi aceeaşi, ceea ce înseamnă faptul că Driver Manager şi fiecare dintre drivere prezintă aceeaşi interfaţă către aceleaşi funcţii

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Accesarea prin intermediul reţelei a unei baze de dateAccesarea prin intermediul reţelei a unei baze de date

1. Interfaţa de programare1. Interfaţa de programare

– conţine apeluri trimise de către aplicaţie– conţine apeluri trimise de către aplicaţie

– aceste interfeţe (SQL, module) sunt, în general, specifice fiecărui sistem de gestiune al bazei de date (ar trebui să fie standard)

– aceste interfeţe (SQL, module) sunt, în general, specifice fiecărui sistem de gestiune al bazei de date (ar trebui să fie standard)

– în DB2 operatorii care se pot folosi la reunirea datelor sunt UNION, INTERSECT, şi EXCEPT, pe când SQL Server nu foloseşte decât operatorul UNION

– în DB2 operatorii care se pot folosi la reunirea datelor sunt UNION, INTERSECT, şi EXCEPT, pe când SQL Server nu foloseşte decât operatorul UNION

ExempluExemplu

2. Protocolul fluxului de date2. Protocolul fluxului de date

– descrie fluxul de date transferat între sistemul de gestiune al bazei de date şi utilizatorul acestuia

– descrie fluxul de date transferat între sistemul de gestiune al bazei de date şi utilizatorul acestuia

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Accesarea prin intermediul reţelei a unei baze de dateAccesarea prin intermediul reţelei a unei baze de date

2. Protocolul fluxului de date2. Protocolul fluxului de date

– de exemplu, poate cere ca primul byte să descrie conţinutul fluxului de date: instrucţiunea SQL care se va executa, valoarea de eroare returnată, sau datele returnate

– de exemplu, poate cere ca primul byte să descrie conţinutul fluxului de date: instrucţiunea SQL care se va executa, valoarea de eroare returnată, sau datele returnate

– formatul acestor date depinde de acest marcator– formatul acestor date depinde de acest marcator

– acest protocol este un protocol logic, fiind independent de protocoalele utilizate de reţeua pe care o folosesc

– acest protocol este un protocol logic, fiind independent de protocoalele utilizate de reţeua pe care o folosesc

– un singur protocol de flux de date poate fi folosit pe un numărmare de reţele diferite

– un singur protocol de flux de date poate fi folosit pe un numărmare de reţele diferite

– sunt, de obicei, specifice fiecărui producător, fiind optimizate pentru fiecare tip de sistem de gestiune a bazelor de date folosit

– sunt, de obicei, specifice fiecărui producător, fiind optimizate pentru fiecare tip de sistem de gestiune a bazelor de date folosit

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

ODBC (Open Database Connectivity)ODBC (Open Database Connectivity)

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

Accesarea prin intermediul reţelei a unei baze de dateAccesarea prin intermediul reţelei a unei baze de date

3. Mecanism de comunicare interprocese3. Mecanism de comunicare interprocese

– ajută la comunicarea dintre procese, fiind dependent de sistemul de operare şi de reţeua folosite

– ajută la comunicarea dintre procese, fiind dependent de sistemul de operare şi de reţeua folosite

4. Protocolul de reţea4. Protocolul de reţea

– se foloseşte la transferul fluxului de date în cadrul reţelei– se foloseşte la transferul fluxului de date în cadrul reţelei

– de protocolul de reţea depind :– de protocolul de reţea depind :

– mecanismul de comunicare interprocese folosit pentru implementarea protocolului fluxului de date

– mecanismul de comunicare interprocese folosit pentru implementarea protocolului fluxului de date

– execuţia operaţiilor de bază practicate pe reţea, cum ar fi transferul fişierelor sau partajarea imprimantelor

– execuţia operaţiilor de bază practicate pe reţea, cum ar fi transferul fişierelor sau partajarea imprimantelor

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

– este un set de obiecte de tip COM utilizate în scopul accesului la sursele de date

– este un set de obiecte de tip COM utilizate în scopul accesului la sursele de date

– este un strat intermediar interpus între limbajele de programare şi tehnologia OLE DB prin care se permite programatorului să scrie programe care accesează date din bazele de date fără a cunoaşte modalitatea de implementare a bazei de date

– este un strat intermediar interpus între limbajele de programare şi tehnologia OLE DB prin care se permite programatorului să scrie programe care accesează date din bazele de date fără a cunoaşte modalitatea de implementare a bazei de date

– programatorul se conectează la baza de date, fără a fi nevoit să aibă cunoştinţe despre limbajul SQL (deşi este permis şi lucrul cu instrucţiuni SQL)

– programatorul se conectează la baza de date, fără a fi nevoit să aibă cunoştinţe despre limbajul SQL (deşi este permis şi lucrul cu instrucţiuni SQL)

Avantaje esenţialeAvantaje esenţiale

– folosirea directă a sintaxei SQL în cadrul aplicaţiilor– folosirea directă a sintaxei SQL în cadrul aplicaţiilor

– folosirea intensivă a tuturor mecanismelor bazei de date (declanşatori, proceduri, funcţii etc.)

– folosirea intensivă a tuturor mecanismelor bazei de date (declanşatori, proceduri, funcţii etc.)

– a apărut în iarna anului 1996– a apărut în iarna anului 1996

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

ArhitecturaArhitectura

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

– provine din produsele mai vechi: Remote Data Objects (RDO) sau Data Access Objects (DAO)

– provine din produsele mai vechi: Remote Data Objects (RDO) sau Data Access Objects (DAO)

– este alcătuit dintr-o serie de obiecte, dintre care cele mai importante sunt:

– este alcătuit dintr-o serie de obiecte, dintre care cele mai importante sunt:

• obiectul Connection – se ocupă de conexiunea la baza de date;

• obiectul Recordset – preia setul de înregistrări din baza de date;

• obiectul Command – foloseşte comenzile SQL;

• obiectul Record – preia un set de date, de obicei, din alte surse decât o bază de date;

• obiectul Connection – se ocupă de conexiunea la baza de date;

• obiectul Recordset – preia setul de înregistrări din baza de date;

• obiectul Command – foloseşte comenzile SQL;

• obiectul Record – preia un set de date, de obicei, din alte surse decât o bază de date;

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

ActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

• obiectul Stream – preia un flux de date, de obicei, dintr-o pagină Web sau dintr-un fişier text;

• obiectul Error – reţine mesajele de eroare;

• obiectul Field – păstrează datele dintr-un câmp al unei baze de date;

• obiectul Parameter – foloseşte un parametru SQL;

• obiectul Property – păstrează informaţii despre obiecte

• obiectul Stream – preia un flux de date, de obicei, dintr-o pagină Web sau dintr-un fişier text;

• obiectul Error – reţine mesajele de eroare;

• obiectul Field – păstrează datele dintr-un câmp al unei baze de date;

• obiectul Parameter – foloseşte un parametru SQL;

• obiectul Property – păstrează informaţii despre obiecte

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

– obiectele pot fi folosite în cadrul programelor printr-o apelare cunoscută sub denumirea "cu punct"

– obiectele pot fi folosite în cadrul programelor printr-o apelare cunoscută sub denumirea "cu punct"

– se ţine seama de poziţia acestor obiecte într-o ierarhie de obiecte predefinită

– se ţine seama de poziţia acestor obiecte într-o ierarhie de obiecte predefinită

– se pot defini variabile care să preia valorile din cadrul obiectelor care pot fi apoi folosite în cadrul programului

– se pot defini variabile care să preia valorile din cadrul obiectelor care pot fi apoi folosite în cadrul programului

ExempluExemplu

dim conn, rs, colset conn =server.createobject("ADODB.Connection")set rs =server.createobject("ADODB.Recordset")

dim conn, rs, colset conn =server.createobject("ADODB.Connection")set rs =server.createobject("ADODB.Recordset")

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

ExempluExemplu

conn.open <sursa_de_date>rs.open <baza_de_date>, connrs.find "camp = '<valoare>'"col = rs.fields.item("camp")rs.closeset rs = nothingset conn = nothing

conn.open <sursa_de_date>rs.open <baza_de_date>, connrs.find "camp = '<valoare>'"col = rs.fields.item("camp")rs.closeset rs = nothingset conn = nothing

– se observă din exemplu cum se foloseşte eficient grupul de conexiuni ("connection pool"), deschizând şi închizând la final conexiunea cu baza de date

– se observă din exemplu cum se foloseşte eficient grupul de conexiuni ("connection pool"), deschizând şi închizând la final conexiunea cu baza de date

– mai eficient ar fi însă să se folosească sintaxa SQL :– mai eficient ar fi însă să se folosească sintaxa SQL :

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

ExempluExemplu

dim conn, rs, col

set conn = server.createobject("ADODB.Connection")conn.open <sursa_de_date>

set rs = conn.execute("SELECT <lista_campuri> FROM <tabele> WHERE <camp> = '<valoare>' etc.")col = rs(0)

rs.closeset rs = nothingset conn = nothing

dim conn, rs, col

set conn = server.createobject("ADODB.Connection")conn.open <sursa_de_date>

set rs = conn.execute("SELECT <lista_campuri> FROM <tabele> WHERE <camp> = '<valoare>' etc.")col = rs(0)

rs.closeset rs = nothingset conn = nothing

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

ActiveX Data Objects (ADO)ActiveX Data Objects (ADO)

– componentele ADO sunt, de obicei, folosite în cadrul limbajelor de programare de nivel înalt, cum ar fi VBScript, VisualBasic, sau Delphi

– componentele ADO sunt, de obicei, folosite în cadrul limbajelor de programare de nivel înalt, cum ar fi VBScript, VisualBasic, sau Delphi

ObservaţiiObservaţii

– în limbajele mai noi de programare de la Microsoft care folosesc platforma NET Framework (VB.NET, C#, Visual C++.NET) este folosită o variantă îmbunătăţită a produsului ADO denumită ADO.NET care are o structură a obiectelor diferită de cea a produsului tradiţional

– în limbajele mai noi de programare de la Microsoft care folosesc platforma NET Framework (VB.NET, C#, Visual C++.NET) este folosită o variantă îmbunătăţită a produsului ADO denumită ADO.NET care are o structură a obiectelor diferită de cea a produsului tradiţional

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NET

ArhitecturaArhitectura

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NET

– înglobează o serie de componente software ce pot fi folosite de către programatori pentru a accesa date (în principal din baze de date relaţionale, dar nu numai) şi servicii de date

– înglobează o serie de componente software ce pot fi folosite de către programatori pentru a accesa date (în principal din baze de date relaţionale, dar nu numai) şi servicii de date

– este o parte a bibliotecii Framework Class ce este încorporată în cadrul platformei NET Framework

– este o parte a bibliotecii Framework Class ce este încorporată în cadrul platformei NET Framework

ComponenţăComponenţă

1. Clasele de furnizare a datelor1. Clasele de furnizare a datelor

– oferă accesul la sursa de date (de exemplu, baze de date SQL Server, ORACLE sau DB2)

– oferă accesul la sursa de date (de exemplu, baze de date SQL Server, ORACLE sau DB2)

– fiecare sursă de date are propriile obiecte de furnizare a datelor, dar are în acelaşi timp şi un set comun de clase :

– fiecare sursă de date are propriile obiecte de furnizare a datelor, dar are în acelaşi timp şi un set comun de clase :

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NET

ComponenţăComponenţă

1. Clasele de furnizare a datelor1. Clasele de furnizare a datelor

• Connection – oferă o conexiune utilizată la comunicarea cu sursa de date, acţionând în acelaşi timp şi ca o clasă abstractă generatoare de obiecte de comandă;

• Command - utilizată la efectuarea unor acţiuni pe sursele de date, cum ar fi citiri, actualizări, sau eliminări de date relaţionale;

• Parameter – descrie un singur parametru pentru o comandă (de exemplu, parametrul unei proceduri stocate);

• DataAdapter – oferă o legătură pentru transferul datelor între sursa de date şi obiectul DataSet;

• DataReader – o clasă utilizată la eficientizarea procesării unei liste mari de rezultate în modalitatea linie cu linie

• Connection – oferă o conexiune utilizată la comunicarea cu sursa de date, acţionând în acelaşi timp şi ca o clasă abstractă generatoare de obiecte de comandă;

• Command - utilizată la efectuarea unor acţiuni pe sursele de date, cum ar fi citiri, actualizări, sau eliminări de date relaţionale;

• Parameter – descrie un singur parametru pentru o comandă (de exemplu, parametrul unei proceduri stocate);

• DataAdapter – oferă o legătură pentru transferul datelor între sursa de date şi obiectul DataSet;

• DataReader – o clasă utilizată la eficientizarea procesării unei liste mari de rezultate în modalitatea linie cu linie

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NETComponenţăComponenţă

2. DataSets2. DataSets

– reprezintă un grup de clase ce descriu în memorie o bază de date simplă, relaţională

– reprezintă un grup de clase ce descriu în memorie o bază de date simplă, relaţională

– clasele alcătuiesc o ierarhie de forma :– clasele alcătuiesc o ierarhie de forma :

– un obiect DataSet ce reprezintă schema bazei de date (sau întreaga bază de date sau doar o parte a acesteia) ce poate conţine tabele şi relaţii între tabelele respective

– un obiect DataSet ce reprezintă schema bazei de date (sau întreaga bază de date sau doar o parte a acesteia) ce poate conţine tabele şi relaţii între tabelele respective

– un obiect DataTable ce reprezintă un singur tabel al bazei de date reprezentat prin nume, rânduri şi coloane

– un obiect DataTable ce reprezintă un singur tabel al bazei de date reprezentat prin nume, rânduri şi coloane

– un obiect DataColumn ce reprezintă o coloană dintr-un tabel (inclusiv numele şi tipul acesteia)

– un obiect DataColumn ce reprezintă o coloană dintr-un tabel (inclusiv numele şi tipul acesteia)

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

– un obiect DataView care sortează datele (asemănător clauzei ORDER BY) şi filtrează înregistrările (asemănător clauzei WHERE) în cazul precizării unui filtru pe date. Un index în memorie este utilizat pentru simplificarea operaţiilor. Toate obiectele DataTableau un filtru implicit deoarece se pot defini mai multe obiecte DataView, reducându-se în acest fel interacţiunea cu baza de date şi îmbunătăţindu-se performanţele.

– un obiect DataView care sortează datele (asemănător clauzei ORDER BY) şi filtrează înregistrările (asemănător clauzei WHERE) în cazul precizării unui filtru pe date. Un index în memorie este utilizat pentru simplificarea operaţiilor. Toate obiectele DataTableau un filtru implicit deoarece se pot defini mai multe obiecte DataView, reducându-se în acest fel interacţiunea cu baza de date şi îmbunătăţindu-se performanţele.

MICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NETComponenţăComponenţă

2. DataSets2. DataSets

– un obiect DataRowView ce reprezintă o singură înregistrare din cadrul obiectului DataView. Diferenţa dintre DataRow şi DataRowView este importantă în momentul trecerii în revistă a seturilor de rezultate

– un obiect DataRowView ce reprezintă o singură înregistrare din cadrul obiectului DataView. Diferenţa dintre DataRow şi DataRowView este importantă în momentul trecerii în revistă a seturilor de rezultate

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTSADO.NETADO.NETComponenţăComponenţă

2. DataSets2. DataSets

– un obiect DataRow ce reprezintă un singur rând din cadrul unui tabel ce permite citirea şi actualizarea valorilor din rândul respectiv ca şi extragerea oricărui rând cu care acesta se află în legătură prin intermediul perechii cheie primară-cheie externă

– un obiect DataRow ce reprezintă un singur rând din cadrul unui tabel ce permite citirea şi actualizarea valorilor din rândul respectiv ca şi extragerea oricărui rând cu care acesta se află în legătură prin intermediul perechii cheie primară-cheie externă

– un obiect DataRelation care se ocupă de relaţiile dintre tabele prin intermediul perechii cheie primară-cheie externă

– un obiect DataRelation care se ocupă de relaţiile dintre tabele prin intermediul perechii cheie primară-cheie externă

– un obiect Constraint care descrie restricţiile impuse bazei de date. Dacă se încalcă aceste restricţii se generează mesaj de eroare

– un obiect Constraint care descrie restricţiile impuse bazei de date. Dacă se încalcă aceste restricţii se generează mesaj de eroare

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEMICROSOFT DATA ACCESS COMPONENTSMICROSOFT DATA ACCESS COMPONENTS

ADO.NETADO.NET

ObservaţieObservaţie

– o clasă DataSet se încarcă prin intermediul obiectului DataAdapter şi îşi poate păstra conţinutul într-un fişier de tip XML sau se poate încărca prin intermediul unui fişier de tip XML fiind foarte utilă în cazul serviciilor Web, aplicaţiilor distribuite sau aplicaţiilor care se conectează ocazional

– o clasă DataSet se încarcă prin intermediul obiectului DataAdapter şi îşi poate păstra conţinutul într-un fişier de tip XML sau se poate încărca prin intermediul unui fişier de tip XML fiind foarte utilă în cazul serviciilor Web, aplicaţiilor distribuite sau aplicaţiilor care se conectează ocazional

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

– este o interfaţă de programare a aplicaţiilor destinată lucrului cu limbajul de programare Java care defineşte modul în care utilizatorul poate accesa o bază de date

– este o interfaţă de programare a aplicaţiilor destinată lucrului cu limbajul de programare Java care defineşte modul în care utilizatorul poate accesa o bază de date

– oferă metode de interogare şi actualizare a datelor dintr-o bază de date şi este orientat către bazele de date relaţionale

– oferă metode de interogare şi actualizare a datelor dintr-o bază de date şi este orientat către bazele de date relaţionale

– permite existenţa mai multor implementări ce pot fi utilizate de către aceeaşi aplicaţie

– permite existenţa mai multor implementări ce pot fi utilizate de către aceeaşi aplicaţie

– interfaţa de programare a aplicaţiilor oferă un mecanism de încărcare dinamică a pachetelor Java corespunzătoare şi înregistrarea lor cu ajutorul unui Driver Manager JDBC

– interfaţa de programare a aplicaţiilor oferă un mecanism de încărcare dinamică a pachetelor Java corespunzătoare şi înregistrarea lor cu ajutorul unui Driver Manager JDBC

– Driver Manager este folosit pentru crearea de conexiuni JDBC– Driver Manager este folosit pentru crearea de conexiuni JDBC

– pe sistemele utilizatorilor se instalează drivere care convertesc cererile primite de la aplicaţiile Java într-un protocol înţeles de către sistemele de gestiune a bazelor de date

– pe sistemele utilizatorilor se instalează drivere care convertesc cererile primite de la aplicaţiile Java într-un protocol înţeles de către sistemele de gestiune a bazelor de date

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATE

TIPURI DE DRIVERETIPURI DE DRIVERE

Java Database Connectivity (JDBC)Java Database Connectivity (JDBC)

• tip 1, legătură JDBC-ODBC;

• tip 2, driverul local al interfeţei de programare a aplicaţiilor;

• tip 3, driverul protocolului de reţea;

• tip 4, driverul protocolului local;

• driverul JDBC intern, folosit pentru lucrul cu proceduri stocate;

• JDBC URL

• tip 1, legătură JDBC-ODBC;

• tip 2, driverul local al interfeţei de programare a aplicaţiilor;

• tip 3, driverul protocolului de reţea;

• tip 4, driverul protocolului local;

• driverul JDBC intern, folosit pentru lucrul cu proceduri stocate;

• JDBC URL

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

– interfaţa JDBC de programare a aplicaţiilor defineşte interfeţe şi clase necesare scrierii de aplicaţii cu baze de date în limbaj de programare Java, stabilind conexiunile necesare

– interfaţa JDBC de programare a aplicaţiilor defineşte interfeţe şi clase necesare scrierii de aplicaţii cu baze de date în limbaj de programare Java, stabilind conexiunile necesare

– aplicaţia Java apelează biblioteca JDBC– aplicaţia Java apelează biblioteca JDBC

– JDBC încarcă driverul corespunzător care comunică cu baza de date– JDBC încarcă driverul corespunzător care comunică cu baza de date

ARHITECTURA JDBCARHITECTURA JDBC

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

REALIZAREA CONEXIUNII FOLOSIND JDBCREALIZAREA CONEXIUNII FOLOSIND JDBC

– înainte de a realiza o conexiune JDBC la o bază de date, trebuie mai întâi importat pachetul java.sql

– înainte de a realiza o conexiune JDBC la o bază de date, trebuie mai întâi importat pachetul java.sql

– încărcarea driverului bazei de date se face prin intermediul clasei driver JDBC folosind apelul Class.forName() care primeşte ca argument numele clasei Driver

– încărcarea driverului bazei de date se face prin intermediul clasei driver JDBC folosind apelul Class.forName() care primeşte ca argument numele clasei Driver

– clasa Driver creează o instanţă a sa proprie– clasa Driver creează o instanţă a sa proprie

– clientul se poate acum conecta la serverul bazei de date prin intermediul driverului JDBC

– clientul se poate acum conecta la serverul bazei de date prin intermediul driverului JDBC

– clasa DriverManager controlează driverele JDBC ce sunt instalate pe sistem

– clasa DriverManager controlează driverele JDBC ce sunt instalate pe sistem

– prin intermediul metodei getConnection() se stabileşte o conexiune la baza de date, specificându-se numele, parola şi un şir URL returnându-se un obiect de conexiune

– prin intermediul metodei getConnection() se stabileşte o conexiune la baza de date, specificându-se numele, parola şi un şir URL returnându-se un obiect de conexiune

– obiectul de conexiune conţine metadate prin care poate furniza informaţii despre baza de date, tabele şi câmpuri, dar şi metode care lucrează cu proceduri stocate

– obiectul de conexiune conţine metadate prin care poate furniza informaţii despre baza de date, tabele şi câmpuri, dar şi metode care lucrează cu proceduri stocate

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

REALIZAREA CONEXIUNII FOLOSIND JDBCREALIZAREA CONEXIUNII FOLOSIND JDBC

– după obţinerea conexiunii, interfaţa de conectare defineşte metodele care interacţionează cu baza de date

– după obţinerea conexiunii, interfaţa de conectare defineşte metodele care interacţionează cu baza de date

– pentru a putea executa instrucţiuni SQL trebuie instanţiat un obiect numit Statement prin intermediul metodei createStatement()

– pentru a putea executa instrucţiuni SQL trebuie instanţiat un obiect numit Statement prin intermediul metodei createStatement()

– interfaţa Statement defineşte metodele utilizate la interacţiunea cu baza de date prin executarea instrucţiunilor SQL

– interfaţa Statement defineşte metodele utilizate la interacţiunea cu baza de date prin executarea instrucţiunilor SQL

– clasa Statement are trei metode de executare a instrucţiunilor: executeQuery(), executeUpdate() şi execute()

– clasa Statement are trei metode de executare a instrucţiunilor: executeQuery(), executeUpdate() şi execute()

ExempleExemple

– pentru o instrucţiune SELECT, metoda folosită este executeQuery()

– pentru o instrucţiune SELECT, metoda folosită este executeQuery()

– pentru instrucţiunile DDL (creare, eliminare, modificare tabele) se foloseşte metoda executeUpdate()

– pentru instrucţiunile DDL (creare, eliminare, modificare tabele) se foloseşte metoda executeUpdate()

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

– interfaţa Java de programare a aplicaţiilor reprezintă un standard pentru conectarea independentă la o bază de date între o aplicaţie scrisă în limbaj de programare Java şi respectiva bază de date

– interfaţa Java de programare a aplicaţiilor reprezintă un standard pentru conectarea independentă la o bază de date între o aplicaţie scrisă în limbaj de programare Java şi respectiva bază de date

– interfaţa pune la dispoziţie o interfaţă de programare a aplicaţiilor la nivel de apel pentru accesul bazei de date prin intermediul sintaxei SQL

– interfaţa pune la dispoziţie o interfaţă de programare a aplicaţiilor la nivel de apel pentru accesul bazei de date prin intermediul sintaxei SQL

– interfaţa accesează virtual orice tip de dată aflată în cadrul unui tabel– interfaţa accesează virtual orice tip de dată aflată în cadrul unui tabel

– începând cu versiunea JDBC API 3.0 este posibil lucrul şi cu alte surse de date decât bazele de date cum ar fi de exemplu fişierele

– începând cu versiunea JDBC API 3.0 este posibil lucrul şi cu alte surse de date decât bazele de date cum ar fi de exemplu fişierele

– principalul avantaj oferit de către JDBC API este acela că o aplicaţie poate avea acces la orice tip de surse de date şi rula pe orice platformă care posedă o maşină virtuală Java

– principalul avantaj oferit de către JDBC API este acela că o aplicaţie poate avea acces la orice tip de surse de date şi rula pe orice platformă care posedă o maşină virtuală Java

– combinaţia dintre interfaţa Java de programare a aplicaţiilor şi platforma Java permite programatorului să folosească în orice situaţie codul scris o singură dată

– combinaţia dintre interfaţa Java de programare a aplicaţiilor şi platforma Java permite programatorului să folosească în orice situaţie codul scris o singură dată

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

CARACTERISTICI SPECIFICECARACTERISTICI SPECIFICE

• stabilirea unei conexiuni la o sursă de date

• trimiterea de interogări şi de instrucţiuni de actualizare către o sursă de date

• prelucrarea rezultatelor

• stabilirea unei conexiuni la o sursă de date

• trimiterea de interogări şi de instrucţiuni de actualizare către o sursă de date

• prelucrarea rezultatelor

LEGĂTURA JDBC-ODBCLEGĂTURA JDBC-ODBC

– este nevoie de interfaţa Java de programare a aplicaţiilor din următoarele motive:

– este nevoie de interfaţa Java de programare a aplicaţiilor din următoarele motive:

– ODBC poate fi utilizat în continuare în cadrul aplicaţiilor Java, dar acest lucru se face mai bine prin intermediul interfeţei Java de programare a aplicaţiilor sub forma unei legături JDBC-ODBC

– ODBC poate fi utilizat în continuare în cadrul aplicaţiilor Java, dar acest lucru se face mai bine prin intermediul interfeţei Java de programare a aplicaţiilor sub forma unei legături JDBC-ODBC

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

LEGĂTURA JDBC-ODBCLEGĂTURA JDBC-ODBC

• ODBC nu este potrivită pentru utilizare directă în aplicaţiile Java deoarece foloseşte o interfaţă scrisă în limbaj de programare C, ceea ce produce o serie de neajunsuri în ceea ce priveşte securitatea, implementarea, robusteţea şi portabilitateaaplicaţiilor.

• Un transfer literal al interfeţei ODBC de programare a aplicaţiilor scrisă în limbaj C în limbaj Java nu este de dorit, deoarece între limbajul C şi limbajul Java există totuşi, o serie de diferenţe importante, cum ar fi cea legată de pointeri, la care ODBC face apel masiv.

• ODBC este dificil de învăţat, faţă de interfaţa Java de programare a aplicaţiilor, care este uşor de manipulat datorită faptului că programatorul nu trebuie să aibe în vedere managementul memoriei, de exemplu.

• Interfaţa Java de programare a aplicaţiilor este o interfaţă Java obişnuită destinată lucrului cu sintaxa SQL ce are la bază ODBC

• ODBC nu este potrivită pentru utilizare directă în aplicaţiile Java deoarece foloseşte o interfaţă scrisă în limbaj de programare C, ceea ce produce o serie de neajunsuri în ceea ce priveşte securitatea, implementarea, robusteţea şi portabilitateaaplicaţiilor.

• Un transfer literal al interfeţei ODBC de programare a aplicaţiilor scrisă în limbaj C în limbaj Java nu este de dorit, deoarece între limbajul C şi limbajul Java există totuşi, o serie de diferenţe importante, cum ar fi cea legată de pointeri, la care ODBC face apel masiv.

• ODBC este dificil de învăţat, faţă de interfaţa Java de programare a aplicaţiilor, care este uşor de manipulat datorită faptului că programatorul nu trebuie să aibe în vedere managementul memoriei, de exemplu.

• Interfaţa Java de programare a aplicaţiilor este o interfaţă Java obişnuită destinată lucrului cu sintaxa SQL ce are la bază ODBC

Dr. ing. Liviu PERNIU

Curs 13 CONEXIUNI LA BAZE DE DATECONEXIUNI LA BAZE DE DATEJava Database Connectivity (JDBC)Java Database Connectivity (JDBC)

LEGĂTURA JDBC-ODBCLEGĂTURA JDBC-ODBC

– legătura dintre JDBC şi ODBC constă dintr-un driver JDBC care utilizează driverul ODBC pentru a se conecta la baza de date

– legătura dintre JDBC şi ODBC constă dintr-un driver JDBC care utilizează driverul ODBC pentru a se conecta la baza de date

– driverul ODBC transformă apelurile metodelor JDBC în apeluri de funcţii ODBC

– driverul ODBC transformă apelurile metodelor JDBC în apeluri de funcţii ODBC

LEGĂTURA ODBC-JDBCLEGĂTURA ODBC-JDBC

– constă dintr-un driver ODBC care utilizează serviciile unui driver JDBC pentru a se conecta la o bază de date

– constă dintr-un driver ODBC care utilizează serviciile unui driver JDBC pentru a se conecta la o bază de date

– driver ODBC transformă apelurile de funcţii ODBC în apeluri de metode JDBC

– driver ODBC transformă apelurile de funcţii ODBC în apeluri de metode JDBC

– necesitatea unei astfel de legături apare în momentul în care nu există un driver ODBC pentru o anumită bază de date, dar în schimb există un driver JDBC

– necesitatea unei astfel de legături apare în momentul în care nu există un driver ODBC pentru o anumită bază de date, dar în schimb există un driver JDBC