1 / 19

C13 – LPO: SQL si JDBC

C13 – LPO: SQL si JDBC. CUPRINS Baze de date, concepte Modele de date Structured Query Language: DDL, DML exemple Java DataBase Connectivity motivare integrare arhitectura utilizare. Obiective. După parcurgerea acestui curs ar trebuie sa puteţi:

kaoru
Télécharger la présentation

C13 – LPO: SQL si JDBC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C13 – LPO: SQL si JDBC CUPRINS Baze de date, concepte Modele de date Structured Query Language: DDL, DML exemple Java DataBase Connectivity motivare integrare arhitectura utilizare

  2. Obiective După parcurgerea acestui curs ar trebuie sa puteţi: • înţelege conceptele vehiculate in baze de date si cele legate de modelul de date relational; • intelege bazele si limitele limbajului SQL si cum se utilizeaza in manipularea datelor; • intelege rolul si necesitatea utilizarii limbajelor de nivel inalt in scrierea aplicatiilor ce opereaza cu baze de date; • intelege si utiliza clasele cu interfetele JDBC pentru accesul la bazele de date din Java.

  3. Concepte in baze de date • Relaţie (relation) - în matematică, relaţia R, este o submulţime a produsului cartezian a două mulţimi (A, B), R : A x B. Dacă (a, b) este un element din R notaţia a R b are semnificaţia de "a este în relaţia R cu b" (o notaţie echivalentă folosită, mai des, în teoria bazelor de date relaţionale este R(a,b)). O relaţie poate fi reflexivă (a R a), simetrică ( a R b => b R a), tranzitivă (a R b & b R c => a R c), antisimetrică (a R b & b R a => a = b) sau totală (a R b sau b R a); • Model de date (data model) - formalism matematic cu notatii pentru descrierea structurilor de date si a multimii operatorilor folositi pentru manipularea si validarea datelor; • Model de daterelaţional (relational model) - un model de date in care aceste sunt organizate în tabele. Multimea numelor coloanelor se numeste schema tabelului. Datele pot fi manipulate folosind algebra relationala. Limbajul SQL este implementarea unei astfel de algebre; • Baza de date (database) - una sau mai multe multimi de date persistente asociate cu o aplicatie pentru actualizarea si interogarea datelor;

  4. Modelul de date relaţional • modelul de date relational este introdus de E.F. Codd în 1970; • datele sunt structurate (organizate) în relaţii (tabele) care au nume; • mutlimea numelor coloanelor se numeste schema relaţiei; • structura de date logica numita relatie este bidimensionala, fiind cunoscut sub numele de tabel, în baza de date fizica;cele două dimensiuni ale structurii sunt denumite rând si coloana; • datele modelului se pot modifica folosind operatorii algebrei relaionale (limbajul SQL este implementarea unei astfel de algebre), ei asigurând selectarea, inserarea, modificarea si stergerea datelor din tabele iar restriciile de integritate asigura pastrarea consistenţei datelor; • modelul in sine poate fi creat si manipulat prin limbajul SQL.

  5. SQL - 1 • SQL este un limbaj neprocedural născut şi dezvoltat în baza răspândirii modelului relaţional; a devenit limbajul standard pentru accesul si manipularea SGBDR; • Obiectivele limbajului sunt: • crearea bazelor de date si a relatiilor; • realizarea operatiilor de întretinere a SGBDR; • realizarea interogãrilor simple si complexe. • Ca urmare a standardizării ISO limbajul SQL are două componente majore: • limbajul pentru definiţia datelor (Data Definition Language - DDL): pentru definirea structurii bazei de date şi controlul accesului la date; • limbajul pentru manipularea datelor (Data Manipulation Language - DML): pentru extragerea şi actualizarea datelor.

  6. Pentru exemplele care vor fi dezvoltate în continuare este suficient prezentarea a numai patru dintre instruncţiunile DML din SQL: SELECT - pentru interogarea bazei de date; SELECT NumePr, Suma FROM Proiecte SELECT * FROM Proiecte; INSERT - pentru inserarea datelor într-un tabel; INSERT INTO Proiecte (IDPr, NumeProiect, Suma1) VALUES ('PR4', Proiect nou', 100000); UPDATE - pentru actualizarea datelor unui tabel; UPDATE Proiecte SET Suma=Suma*1.20; DELETE - pentru stergerea datelor unui tabel; DELETE FROM Proiecte WHERE NumePr="Proiect1"; SQL - 2

  7. Motivele utilizarii JDBC • aplicatiile din categoria bazelor de date (reale, industriale) au nevoie de facilitatile DML (Data Manipulation Language) ale SQL dar si de o flexibilitate pe care doar un limbaj de programare de nivel inalt (LPNI) il are (SQL este doar un limbaj neprocedural). • SQL este necesar deoarece este: • simplu si • eficient la manipularea datelor. • LPNI este necesar deoarece suport: • calcul numeric complex; • structuri de date complexe; • interfata grafica si • integrare cu alte aplicatii.

  8. Integrarea SQL in LPNI • aplicatia este scrisa intr-un LPNI avand integrate instructiuni SQL; • cand aplicatia doreste sa comunice cu SGBDR instructiunile SQL (interogari) se folosesc pentru extragerea si manipularea de date; • interogarile SQL produc multimi de multimi de tuple iar LPNI nu au facilitati (tipuri de date) pentru prelucrarea acestora; • aceasta nepotrivire se rezolva prin iterarea elementele multimii folosind identificatorul de multime (handle); • integrarea SQL in LPNI se poate face cu mai multe tehnologii, JDBC asigura independenta codului sursa si obiect in raposrt cu SGBDR; • scopul JDBC este sa asigure conectarea aplicatiei la aproape oriceSGBDR; • aplicatiile ce folosesc JDBC (sau ODBC) sunt independente de SGBDR la nivel de cod sursa si executabil (daca SQL-ul este standard); • independenta este atinsa prin introducerea unui nivel intermediar, toate interactiunea cu un SGBDR fiind realizata printr-un driver specific SGBDR-ului.

  9. JDBC – arhitectura si functionare Aplicatie (Program) Driver Manager apel JDBC (SQL) Driver MS Access) Selectare Driver Driver SQL se traduce in comenzi specifice ale SGBDR Driver SQL Server Driver Oracle Incarcare Driver … • o aplicatei (un program) • un manager de driver-e • un driver specific al SGBDR-ului • un SGBDR. SQL Server MS Access Oracle …

  10. Clase si interfete JDBC • JDBC este o colectie de clase si de interfete Java ce contine metode pentru: • conectarea la un SGBDR (local sau la distanta); • executia de instructiuni SQL; • iterarea prin multimi rezultate din instructiuni SQL; • gestiunea tranzactiilor; • tratarea exceptiilor. • stocate in pachetul java.sql.

  11. Inregistrarea driver-ului • Metoda public static native Class.forName(String s) throws ClassNotFoundException din clasajava.lang.Class intoarce pentru name=“nume_driver" clasa Driversi executa constructorul ei static; accest obiectDriver se va inregistra cu clasa DriverManager • Exemplu: Un driver JDBC (ODBC)MS Access se incarca prin: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  12. Stabilirea conexiunii • o sesiune cu SGBD-ul se incepe prin crearea obiectului Connection Connection con = DriverManager.getConnection(url, userId, password); • argumentul url are formatul: jdbc:[drivertype]:[database], jdbc este o constanta, [drivertype] este tipul SGBDR la care dorim sa ne conectam (de ex. Microsoft Access Driver (*.mdb)), iar [database] este locul SGBDR avand forma generala: //hostname[:portnumber]/database_name • iata un exemplu pentru MS Access: "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)} ;DBQ=D:\\work\\PrDb\\test.mdb; DriverID=22;READONLY=false}";

  13. Intefata Connection • interfata java.sql.Connection are o multime de clase si metode folosite la: • controlul starii tranzactiilor obiectelor Connection object, • crearea si executarea se instructiuni SQL; • iterarea prin rezultatele extrase din SGBDR • terminarea interactiunii cu SGBDR prin inchiderea conexiunii • dupa deschiderea conexiuni si inainte de inchiderea ei, ea se poate refolosi pentru executia a mai multor tranzactii.

  14. Clasa si subclase Statenent • clasa Statement este de baza pentru trimiterea de interogari catre SGBDR; • obiectele ei trimit interogari SQL SGBDR-ului ce sunt executate fara reluare intr-o tranzactie fara parametri; • obiectele PreparedStatement se folosesc in cazul interogarilor SQL cu parametri sau in cazul celor care se executa de mai multe ori (intr-un ciclu); acestea pot fi precompilate pentru cresterea performatelor; • obiectele CallableStatement se folosesc cu proceduri stocate.

  15. Executia instructiunilor SQL • urmatoarele etape trebuie parcuse pentru a trimite o interogare catre SGBDR folosind obiectele Statement (S) sau PreparedStatement (PS): • se defineste interogarea SQL sub forma unui String; • se creaza obiectul S sau PS; • daca instructiunea SQL este CREATE, INSERT, DELETE, UPDATE se aplica metoda executeUpdate() asupra lui obiectului S sau PS; • daca instructiunea SQL este SELECT atunci se creaaza obiectul ResultSet object; • se stocheaza in obiectul ResultSet valoarea intoarsa de aplicarea metodei executeQuery() asupra lui S sau PS.

  16. Obiectul ResultSet • metoda executeQuery() intoarce un obiect de tipul multime (sau spermultime); • acest obiect multime trebuie sa fie atribuit unuo obiect din clasa ResultSet; • clasa ResultSet are metoda next() ce permite parcurgerea tuplelor din multime; • initial, obiectul ResultSet este pozitionat inainte de prima tupla din rezultat; • metoda next() intoarce true daca exista o tupla urmatoare in rezultat altfel intoarce false; • dupa executia lui next(), obiectul ResultSet contine un pointer la tupla curenta.

  17. Un exemplu String sql="SELECT * FROM Note" + "WHERE idStud=007007"; Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(sql); int j_studId; String j_cursId; String j_calificativ; while (rs.next()){ // etragerea datelor din rs //si eventuale prelucrari j_studId=rs.getInt(“idStud"); j_cursId=rs.getString(“idCurs"); j_calificativ=rs.getString(3);// coloana a 3-a . . . }

  18. Intrebari • Care este motivul utilizarii JDBC in accesarea bazelor de date? • Care este motivul utilizarii LPNI in aplicatiile cu SGBDR? • Ce este JDBC? • Ce rol are obiectul Connection? • Pentru ce fel de interogari se foloseste clasa Statement?

  19. Bibliografie • http://www.oracle.com/technetwork/java/javase/documentation/index.html • http://docs.oracle.com/javase/6/docs/ • Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4. • Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9. • Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7. • http://www.east.utcluj.ro/mb/mep/antal/downloads.html

More Related