Tutorial Java – JDBC Baze de date : Partea 2

Interogarea unei baze de date in Java

Prima pagina pe care o vede utilizatorul atunci cand intra in aplicatie este pagina afisata in imaginea de la inceputul acestui modul. Aceasta pagina este un JSP, care afiseaza rezultatele obtinute in urma interogarii bazei de date. Atunci cand utilizatorul intra in aplicatie este trimis catre un servlet care interogheaza baza de date. Dupa ce datele au fost extrase acestea sunt afisate folosind jsp-ul de mai devreme. Codul pentru servletul care interogheaza baza de date este prezentat mai jos:

Java


Intr-o prima etapa se preia de pe context atributul care corespunde conexiunii. Vom folosi un obiect de tip LinkedList in care vom pune toti salariatii care se afla in aceasta tabela. Ca si la punctul anterior, interogarea bazei de date se va face tot prin executarea unui scurte intructiuni de SQL (linia 9). Spre deosebire insa de punctul anterior, nu vom folosi metoda executeUpdate(), ci se va folosi executeQuery(). Diferenta dintre cele doua consta in faptul ca executeQuery returneza un obiect de tip ResultSet in care sunt stocate rezultatele interogarii efectuate. Metodele executeUpdate() sunt folosite atunci cand se fac operatii de adaugare, stergere sau modificare a datelor.

Obiectul de tip ResultSet este parcurs folosind metoda next(). Aceasta metoda muta cursorul cu un item la dreapta si returneaza true sau false, daca s-a ajuns la finalul elementelor sau nu. Pe langa metoda next(), mai exista o serie de alte metode de pozitionare a cursorului precum: absolute(int numarulRandului) (muta cursorul pe o anumita pozitie data), aftherLast(), beforeLast(), last() etc. Pentru o referinta completa a metodelor se poate consulta API-ul Java.

Datele sunt extrase din ResultSet folosind metode de tip getTipData(). Astfel exista metode pentru extragere de int, String, float ect. Aceste metode primesc ca parametru fie numele coloanei de unde se doreste extragerea acestei date, fie numarul acestei coloane. De exemplu linia 12 din codul de mai sus putea fi inlocuita cu String nume = resultSet.getString(2).

Pe masura ce este parcurs obiectul de tip ResultSet, datele care sunt extrase din acesta sunt incapsulate in obiecte de tip Salariat si adaugate in LinkedListul declarat la linia 6. In momentul in care acest LinkedList este complet va fi stocat ca atribut pe sesiune si se va face trimitere catre pagina JSP care afiseaza datele. Codul acestei pagini este prezentat mai jos:

Java
Java


Pentru afisare folosim un tabel in care vom insera datele despre salariati. Pe langa aceste datele, pentru fiecare salariat in parte inseram si doua formulare. Din aceste formulare (blocurile de linii 42-47 si 50-53) singurele elemente care sunt vizibile sunt butoanele de submit. Formularele contin o serie de input-uri ascunse. Atunci cand cineva apasa de exemplu butonul de stergere pentru un anumit angajat avem nevoie de id-ul angajatului respectiv pentru a putea sti ce sa stergem din baza de date. Cand butonul de stergere este apasat este trimis intreg formularul, inclusiv inputul ascuns care contine id-ul angajatului care trebuie sters.

Stergerea unei inregistrari din baza de date in Java

Ca mod de lucru stergere unei intregistrari dintr-o tabela se asemana destul de mult cu inserarea unei inregistrari: trebuie construit un obiect de tip Stament care va executa o instructiune SQL. Folosind id-ul obtinut din inputurile ascunse care se gasesc in pagina JSP vom scrie intr-un servlet StergeAngajatServlet.java, codul care va stege inregistrarea selectata:

Java


Modificarea unei inregistrari (utilizarea PreparedStatement)

In principiu, ca mod lucru, modficarea unei anumite inregistrari se poate face la fel ca si adaugare sau stergerea folosind un String, pe care il concateneam cu o serie de alte variabile, pentru a obtine forma finala a instructiunii de SQL.

Insa in cazul in care aveam de-a face cu o instructiune SQL complicata si lunga se recomanda utilizarea obiectelor de tip PreparedStatement. Obiectele de acest tip permit crearea de instructiuni SQL parametrizate. De exemplu putem crea o instructione de forma „UPDATE salariati SET NUME = ? , SALARIU = ? WHERE ID = ?”. Ulterior folosind metode de genul setString(1,”Gigi”) sau setInt(2,90) putem indica ca in locul primului semn de intrebare sa fie pus stringul “Gigi” sau in locul celui de-al doilea semn de intrebare sa fie pus un int cu valoare 90. Mai jos aveti codul corespunzator servletului care face modificari pentru inregistrarile din tabela salariati:

Java


Ca si in cazul stergerii, se folosesc inputurile ascunse din formularul JSP-ului care afiseaza datele:

Java


Tags: , ,



Alte articole si tutoriale:
« »

Oferta limitata eBook gratuit: DUBLEZA-TI VENITUL PRIN CUNOSTINTELE DE IT

Inscrie-te la newsletter si vei primi un eBook gratuit. Vei fi si informat despre ofertele speciale, tutoriale gratis si discount-urile pentru cursurile LEC Academy.

Download ebook
×

Abonare email

Accesul la tutorialele gratuite se face pe baza inscrierii la newsletter. Inscrie-te la newsletter-ul LEC Academy si ai acces la peste 40 de lectii gratuite. Daca doresti, vei fi informat despre ofertele speciale, promotiile si discount-urile pentru cursurile LEC Academy.

Vezi lectii gratis
×