Sunteți pe pagina 1din 78

Universitatea “Constantin Brâncuşi” din Târgu-Jiu

Facultatea de Inginerie
Departamentul de Automatică, Energie şi Mediu

Aplicații JAVA

Lect.dr. Adrian Runceanu


copyright@www.adrian.runceanu.ro

Curs 11
Applet-uri în Java
Lucrul cu baze de date în Java

27.05.2015 Curs - Aplicatii Java 2


copyright@www.adrian.runceanu.ro

1. Applet-uri în Java

1. Ce este un applet?
2. Crearea unui applet simplu
3. Ciclul de viata al unui applet
4. Interfata grafica cu utilizatorul
5. Definirea si folosirea parametrilor
6. Tag-ul <APPLET>
7. Folosirea firelor de executie în appleturi
8. Alte metode oferite de clasa Applet
9. Probleme de securitate

27.05.2015 Curs - Aplicatii Java 3


copyright@www.adrian.runceanu.ro

Ce este un applet?

Definitie

Un applet reprezinta o suprafata de afisare


(container) ce poate fi inclusa într-o pagina Web si
gestionata printr-un program Java.
Un astfel de program se mai numeste miniaplicatie.

27.05.2015 Curs - Aplicatii Java 4


copyright@www.adrian.runceanu.ro

Ce este un applet?

 Codul unui applet poate fi format din una sau mai


multe clase.
 Una dintre acestea este principala si extinde clasa
Applet, fiind clasa ce trebuie specificata în
documentul HTML ce descrie pagina de Web în care
dorim sa includem applet-ul.
 Diferenta fundamentala dintre un applet si o
aplicatie consta în faptul ca, un applet nu poate fi
executat independent, ci va fi executat de browser-ul
în care este încarcata pagina Web ce contine applet-
ul respectiv.

27.05.2015 Curs - Aplicatii Java 5


copyright@www.adrian.runceanu.ro

Ce este un applet?

 O aplicatie independenta este executata prin apelul


interpretorului Java, având ca parametru numele
clasei principale a aplicatiei, clasa principala fiind
cea care contine metoda main.
 Ciclul de viata al unui applet este complet diferit,
fiind dictat de evenimentele generate de catre
browser la vizualizarea documentului HTML ce
contine applet-ul.
 Pachetul care ofera suport pentru creearea de
applet-uri este java.applet.

27.05.2015 Curs - Aplicatii Java 6


copyright@www.adrian.runceanu.ro

2. Crearea unui applet

 Orice applet este implementat prin crearea unei subclase a


clasei Applet.
 Ierarhia claselor din care deriva Applet este prezentata în
figura de mai jos:

 Fiind derivata din clasa Container, clasa Applet descrie de fapt


suprafete de afisare, asemenea claselor Frame sau Panel.

27.05.2015 Curs - Aplicatii Java 7


copyright@www.adrian.runceanu.ro

2. Crearea unui applet

Un exemplu de applet simplu:


import java.applet.Applet;
import java.awt.*;
public class AppletSimplu extends Applet {
public void paint(Graphics g) {
g.setFont(new Font("Arial", Font.BOLD, 16));
g.drawString("Hello", 0, 30);
}
}

Se va salva clasa de mai sus într-un fisier AppletSimplu.java.


27.05.2015 Curs - Aplicatii Java 8
copyright@www.adrian.runceanu.ro

2. Crearea unui applet

Compilarea

 Compilarea se face la fel ca si la aplicatiile


independente, apelând compilatorul javac pentru
clasa principal a applet-ului (cea care extinde
Applet).
javac AppletSimplu.java
 In cazul în care compilarea a reusit va fi generat
fisierul AppletSimplu.class.

27.05.2015 Curs - Aplicatii Java 9


copyright@www.adrian.runceanu.ro

2. Crearea unui applet

Executia (vizualizarea)

Pentru a vizualiza acest applet trebuie sa cream un


document HTML, de exemplu demo.html, în care sa
specificam cel putin urmatoarele informatii:

 clasa ce contine codul appletului

 latimea si înaltimea suprafetei alocate pe pagina


Web

27.05.2015 Curs - Aplicatii Java 10


copyright@www.adrian.runceanu.ro

2. Crearea unui applet

<HTML>
<HEAD>
<TITLE> Un applet simplu </TITLE>
</HEAD>
<APPLET CODE="AppletSimplu.class"
WIDTH=100 HEIGHT=50></APPLET>
</HTML>

Vizualizarea acestui document se poate face cu orice browser


(Internet Explorer, Chrome, Firefox, Safari, Opera etc), sau cu
utilitarul appletviewer ce vine în pachetul JDK.
27.05.2015 Curs - Aplicatii Java 11
copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet

 Executia unui applet începe în momentul în care un


browser afiseaza o pagina Web în care este inclus
applet-ul respectiv si poate trece prin mai multe
etape.

 Fiecare etapa este strâns legata de un eveniment


generat de catre browser si determina apelarea unei
metode specifice din clasa ce implementeaza
applet-ul.

27.05.2015 Curs - Aplicatii Java 12


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet

1. Incarcarea in memorie
 Este creata o instanta a clasei principale a appletului
si încarcata în memorie.

2. Initializarea
 Este apelata metoda init ce permite initializarea
diverselor variabile, citirea unor parametri de
intrare, etc.

3. Pornirea
 Este apelata metoda start

27.05.2015 Curs - Aplicatii Java 13


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet


4. Executia propriu-zisa

 Consta în interactiunea dintre utilizator si


componentele afisate pe suprafata applet-ului sau
în executarea unui anumit cod într-un fir de
executie.
 In unele situatii întreaga executie a applet-ului se
consuma la etapele de initializare si pornire.

27.05.2015 Curs - Aplicatii Java 14


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet


5. Oprirea temporara

 In cazul în care utilizatorul paraseste pagina Web în


care ruleaza appletul este apelata metoda stop a
acestuia, dându-i astfel posibilitatea sa se opreasca
temporar cât timp nu este vizibil, pentru a nu
consuma inutil din timpul procesorului.
 Acelasi lucru se întâmpla daca fereastra browserului
este minimizata.
 In momentul când pagina Web ce contine applet-ul
devine din nou activa, va fi reapelata metoda start.

27.05.2015 Curs - Aplicatii Java 15


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet

6. Oprirea definitiva

 La închiderea tuturor instantelor browserului folosit


pentru vizualizare, applet-ul va fi eliminat din
memorie si va fi apelata metoda destroy a acestuia,
pentru a-i permite sa elibereze resursele detinute.

 Apelul metodei destroy este întotdeauna precedat


de apelul metodei stop.

27.05.2015 Curs - Aplicatii Java 16


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet

Metodele specifice applet-urilor


Asadar, exista metode specifice applet-ului ce sunt
apelate automat la diverse evenimente generate de
catre browser:

27.05.2015 Curs - Aplicatii Java 17


copyright@www.adrian.runceanu.ro

3. Ciclul de viata al unui applet

Structura generala a unui applet:


import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class StructuraApplet extends Applet {
public void init() { }
public void start() { }
public void stop() { }
public void destroy() { }
public void paint(Graphics g) { }
}
27.05.2015 Curs - Aplicatii Java 18
copyright@www.adrian.runceanu.ro

4. Interfata grafica cu utilizatorul

 Dupa cum am vazut, clasa Applet este o extensie a


superclasei Container, ceea ce înseamna ca applet-urile
sunt, înainte de toate, suprafete de afisare.
 Plasarea componentelor, gestionarea pozitionarii lor si
tratarea evenimentelor generate se realizeaza la fel ca si
în cazul aplicatiilor.
 Uzual, adaugarea componentelor pe suprafata
appletului precum si stabilirea obiectelor responsabile
cu tratarea evenimentelor generate sunt operatiuni ce
vor fi realizate în metoda init.
 Gestionarul de pozitionare implicit este FlowLayout,
însa acesta poate fi schimbat prin metoda setLayout.

27.05.2015 Curs - Aplicatii Java 19


copyright@www.adrian.runceanu.ro

4. Interfata grafica cu utilizatorul

Desenarea pe suprafata unui applet


 Exista o categorie întreaga de applet-uri ce nu
comunica cu utilizatorul prin intermediul
componentelor ci, executia lor se rezuma la diverse
operatiuni de desenare executate în metoda paint.
 Reamintim ca metoda paint este responsabila cu
definirea aspectului grafic al oricarei componente.
 Implicit, metoda paint din clasa Applet nu realizeaza
nimic, deci, în cazul în care dorim sa desenam direct
pe suprafata unui applet va fi nevoie sa supradefinim
aceasta metoda.
27.05.2015 Curs - Aplicatii Java 20
copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

 In cazul în care este aleasa aceasta solutie,


evenimentele tratate uzual vor fi cele generate de
mouse sau tastatura.
 Parametrii sunt pentru applet-uri ceea ce
argumentele de la linia de comanda sunt pentru
aplicatiile independente.
 Ei permit utilizatorului sa personalizeze aspectul sau
comportarea unui applet fara a-i schimba codul si
recompila clasele.

27.05.2015 Curs - Aplicatii Java 21


copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

 Definirea parametrilor se face în cadrul tagului APPLET din


documentul HTML ce contine appletul si sunt identificati prin
atributul PARAM.
 Fiecare parametru are un nume, specificat prin NAME si o
valoare, specificata prin VALUE, ca în exemplul de mai jos:
<APPLET CODE="AppletSimplu.class" WIDTH=100 HEIGHT=50
<PARAM NAME=textAfisat VALUE="Salut">
<PARAM NAME=numeFont VALUE="Times New Roman">
<PARAM NAME=dimFont VALUE=20>
</APPLET>
 Ca si în cazul argumentelor trimise aplicatiilor de la linia de
comanda, tipul parametrilor este sir de caractere, indiferent
daca valoarea este între ghilimele sau nu.

27.05.2015 Curs - Aplicatii Java 22


copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

 Fiecare applet are si un set de parametri prestabiliti


ale caror nume nu vor putea fi folosite pentru
definirea de noi parametri folosind metoda de mai
sus.
 Acestia apar direct în corpul tagului APPLET si
definesc informatii generale despre applet.
 Exemple de astfel de parametri sun CODE, WIDTH
sau HEIGHT.

27.05.2015 Curs - Aplicatii Java 23


copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

 Folosirea parametrilor primiti de catre un applet se face


prin intermediul metodei getParameter care primeste ca
argument numele unui parametru si returneaza valoarea
acestuia.
 In cazul în care nu exista nici un parametru cu numele
specificat, metoda întoarce null, caz în care programul
trebuie sa atribuie o valoare implicita variabilei în care se
dorea citirea respectivului parametru.
 Sa rescriem applet-ul considerat initial (AppletSimplu)
astfel încât acesta sa afiseze textul primit ca parametru,
folosind un font cu numele si dimeniunea specificate de
asemenea ca parametri.
27.05.2015 Curs - Aplicatii Java 24
copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor


import java.applet.Applet; public void paint(Graphics g) {
import java.awt.*; g.setFont(new Font(numeFont, Font.BOLD,
public class AppletSimplu extends Applet { dimFont));
String text, numeFont; g.drawString(text, 20, 20);
int dimFont; }
public void init() { }
text = getParameter("textAfisat");
if (text==null) text="Hello"; // valoare
implicita
numeFont =
getParameter("numeFont");
if (numeFont==null) numeFont="Arial";
try {
dimFont =
Integer.parseInt(getParameter("dimFont"));
} catch(NumberFormatException e) {
dimFont = 16;
}
}
27.05.2015 Curs - Aplicatii Java 25
copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

 Orice applet poate pune la dispozitie o documentatie"


referitoare la parametrii pe care îi suporta, pentru a
veni în ajutorul utilizatorilor care doresc sa includa
applet-ul într-o pagina Web.
 Aceasta se realizeaza prin supradefinirea metodei
getParameterInfo, care returneaza un vector format
din triplete de siruri.
 Fiecare element al vectorului este de fapt un vector cu
trei elemente de tip String, cele trei siruri
reprezentând numele parametrului, tipul sau si o
descriere a sa.
27.05.2015 Curs - Aplicatii Java 26
copyright@www.adrian.runceanu.ro

5. Definirea si folosirea parametrilor

public String[][] getParameterInfo() {


String[][] info = {
// Nume Tip Descriere
{"textAfisat", "String", "Sirul ce va fi afisat"},
{"numeFont", "String", "Numele fontului"},
{"dimFont", "int", "Dimensiunea fontului"}
};
return info;
}
Informatiile furnizate de un applet pot fi citite din
browserul folosit pentru vizualizare prin metode specifice
acestuia.

27.05.2015 Curs - Aplicatii Java 27


copyright@www.adrian.runceanu.ro

< APPLET 6. Tag-ul <APPLET>


[CODEBASE = directorApplet]
CODE = clasaApplet
[ALT = textAlternativ]
[NAME = numeInstantaApplet]
WIDTH = latimeInPixeli
HEIGHT = înaltimeInPixeli
[ALIGN = aliniere]
[VSPACE = spatiuVertical]
[HSPACE = spatiuOrizontal]
>
[< PARAM NAME = numeParametru1 VALUE = valoare1 >]
[< PARAM NAME = numeParametru2 VALUE = valoare2 >]
...
[text HTML alternativ]
</APPLET>
27.05.2015 Curs - Aplicatii Java 28
copyright@www.adrian.runceanu.ro

6. Tag-ul <APPLET>

Atributele puse între paranteze patrate sunt optionale.


CODEBASE = directorApplet
Specifica URL-ul în care se gaseste clasa applet-ului.
Uzual se exprima relativ la directorul documentului
HTML.
In cazul în care lipseste, se considera implicit URL-ul
documentului.
CODE = clasaApplet
Numele fisierului ce contine clasa principala a applet-
ului.
Acesta va fi cautat în directorul specificat de CODEBASE.
Nu poate fi absolut. Curs - Aplicatii Java
27.05.2015 29
copyright@www.adrian.runceanu.ro

6. Tag-ul <APPLET>

ALT = textAlternativ
Specifica textul ce trebuie afisat daca browserul
întelege tagul APPLET dar nu poate rula applet-uri
Java.

NAME = numeInstantaApplet
Ofera posibilitatea de a da un nume respectivei
instante a appletului, astfel încât mai multe applet-uri
aflate pe aceeasi pagina sa comunice între ele
folosindu-se de numele lor.

27.05.2015 Curs - Aplicatii Java 30


copyright@www.adrian.runceanu.ro

6. Tag-ul <APPLET>

WIDTH = latimeInPixeli
HEIGHT = înaltimeInPixeli
Specifica latimea si înaltimea suprafetei în care va fi
afisat appletul.
ALIGN = aliniere
Semnifica modalitatea de aliniere a appletului în
pagina Web.
Acest atribut poate primi una din urmatoarele valori:
left, right, top, texttop, middle, absmiddle, baseline,
bottom, absbottom, semnificatiile lor fiind aceleasi ca
si la tagul IMG.

27.05.2015 Curs - Aplicatii Java 31


copyright@www.adrian.runceanu.ro

6. Tag-ul <APPLET>

VSPACE = spatiuVertical
HSPACE = spatiuOrizontal

Specifica numarul de pixeli dintre applet si marginile


suprafetei de afisare.

< PARAM NAME = numeParametru1 VALUE = valoare1 >

Tag-urile <PARAM> sunt folosite pentru specificarea


parametrilor unui applet.

27.05.2015 Curs - Aplicatii Java 32


copyright@www.adrian.runceanu.ro

7. Folosirea firelor de executie în appleturi

 Fiecare applet aflat pe o pagina Web se executa într-un


fir de executie propriu.
 Acesta este creat de catre browser si este responsabil cu
desenarea applet-ului (apelul metodelor update si paint)
precum si cu transmiterea mesajelor generate de catre
componentele applet-ului.
 In cazul în care dorim sa realizam si alte operatiuni
consumatoare de timp este recomandat sa le realizam
într-un alt fir de executie, pentru a nu bloca interactiunea
utilizatorului cu applet-ul sau redesenarea acestuia.

27.05.2015 Curs - Aplicatii Java 33


copyright@www.adrian.runceanu.ro

7. Folosirea firelor de executie în appleturi

 Structura unui applet care doreste sa lanseze un fir


de executie poate avea doua forme.

 In prima situatie applet-ul porneste un fir de


executie la initialzarea sa iar acesta va rula,
indiferent daca applet-ul mai este sau nu vizibil,
pâna la oprirea sa naturala (terminarea metodei
run)

27.05.2015 Curs - Aplicatii Java 34


copyright@www.adrian.runceanu.ro

7. Folosirea firelor de executie în appleturi

import java.applet.Applet;
class AppletThread1 extends Applet implements Runnable {
Thread appletThread = null;
public void init() {
if (appletThread == null) {
appletThread = new Thread(this);
appletThread.start();
}
}
public void run() {
// codul firului de executie
}
}

27.05.2015 Curs - Aplicatii Java 35


copyright@www.adrian.runceanu.ro

7. Folosirea firelor de executie în appleturi

In cazul în care firul de executie pornit de applet


efectueaza operatii ce au sens doar daca applet-ul este
vizibil, cum ar fi animatie, ar fi de dorit ca acesta sa se
opreasca atunci când applet-ul nu mai este vizibil (la
apelul metodei stop) si sa reporneasca atunci când
appletul redevine vizibil (la apelul metodei start).

27.05.2015 Curs - Aplicatii Java 36


copyright@www.adrian.runceanu.ro

7. Folosirea firelor de executie în appleturi


import java.applet.Applet;
public class StructuraApplet extends Applet implements Runnable {
Thread appletThread = null;
boolean running = false;
public void start() {
// reporneste firul de executie
if (appletThread == null) {
appletThread = new Thread(this);
running = true;
appletThread.start();
}
}
public void stop() {
// opreste firul de executie
running = false;
appletThread = null;
}
public void run() {
while (running) {
// codul firului de executie
}
27.05.2015 } Curs - Aplicatii Java 37
copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Clasa Applet ofera metode specifice applet-urilor pentru:


 Punerea la dispozitie a unor informatii despre applet
 Similara cu metoda getParameterInfo ce oferea o
"documentatie" despre parametrii pe care îi suporta un
applet, exista metoda getAppletInfo ce permite
specificarea unor informatii legate de applet cum ar fi
numele, autorul, versiunea, etc.
 Metoda returneaza un sir de caractere continând
informatii despre applet.
public String getAppletInfo() {
return "Cel mai simplu applet, autor necunoscut, ver 1.0";
}
27.05.2015 Curs - Aplicatii Java 38
copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Aflarea unor adrese URL referitoare la applet

Se realizeaza cu metodele:
 getCodeBase - ce returneaza URL-ul directorului ce
contine clasa appletului
 getDocumentBase - returneaza URL-ul directorului ce
contine documentul HTML în care este inclus applet-
ul respectiv.

Sunt foarte utile deoarece permit specificarea relativa a


fisierelor folosite de un applet.
27.05.2015 Curs - Aplicatii Java 39
copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Afisarea imaginilor

 Afisarea imaginilor într-un applet se face fie prin


intermediul unei componente ce permite acest
lucru, cum ar fi o suprafata de desenare de tip
Canvas, fie direct în metoda paint a applet-ului,
folosind metoda drawImage a clasei Graphics.

 In ambele cazuri, încarcarea imaginii în memorie se


va face cu ajutorul metodei getImage din clasa
Applet.

27.05.2015 Curs - Aplicatii Java 40


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Aceasta poate primi ca argument fie adresa URL


absoluta a fisierului ce contine imaginea, fie calea sa
relativa la o anumita adresa URL, cum ar fi cea a
directorului în care se gaseste documentul HTML ce
contine applet-ul (getDocumentBase) sau a
directorului în care se gaseste clasa applet-ului
(getCodeBase).

27.05.2015 Curs - Aplicatii Java 41


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

import java.applet.Applet;
import java.awt.*;
public class AppletImagine extends Applet {
Image img = null;
public void init() {
img = getImage(getCodeBase(), "taz.gif");
}
public void paint(Graphics g) {
g.drawImage(img, 0, 0, this);
}
}

27.05.2015 Curs - Aplicatii Java 42


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Afisarea unor mesaje în bara de stare a browserului

Acest lucru se realizeaza cu metoda showStatus

public void init() {


showStatus("Initializare applet...");
}

27.05.2015 Curs - Aplicatii Java 43


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Aflarea contextului de executie


 Contextul de executie al unui applet se refera la pagina în
care acesta ruleaza si este descris de interfata AppletContext.
 Crearea unui obiect ce implementeaza aceasta interfata se
realizeaza de catre browser, la apelul metodei
getAppletContext a clasei Applet.
 Prin intermediul acestei interfete un applet poate "vedea“ în
jurul sau, putând comunica cu alte applet-uri aflate pe
aceeasi pagina sau cere browser-ului sa deschida diverse
documente.
 AppletContext env = getAppletContext();

27.05.2015 Curs - Aplicatii Java 44


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Afisarea unor documente în browser


Se face cu metoda showDocument ce primeste adresa
URL a fisierului ce contine documentul dorit (text,
html, imagine, etc).
Aceasta metoda se gaseste în interfata AppletContext.
try {
URL doc = new
URL("http://www.scoaladeinformatica.ro");
getAppletContext().showDocument(doc);
} catch(MalformedURLException e) {}

27.05.2015 Curs - Aplicatii Java 45


copyright@www.adrian.runceanu.ro

8. Alte metode oferite de clasa Applet

Comunicarea cu alte applet-uri aflate pe aceeasi pagina


 Aceasta comunicare implica de fapt identificarea unui
applet aflat pe aceeasi pagina si apelarea unei metode
sau setare unei variabile publice a acestuia.
 Identificarea se face prin intermediu numelui pe care
orice instanta a unui applet îl poate specifica prin
atributul NAME.
 Obtinerea unei instante a unui applet al carui nume îl
cunoastem sau obtinerea unei enumerari a tuturor
applet-urilor din pagina se fac cu metodele definite de
interfata AppletContext getApplet si getApplets.

27.05.2015 Curs - Aplicatii Java 46


copyright@www.adrian.runceanu.ro

9. Probleme de securitate

Un applet nu poate sa:


 Citeasca sau scrie fisiere pe calculatorul pe care a fost
încarcat (client)
 Deschida conexiuni cu alte masini în afara de cea de
pe care provine (host)
 Porneasca programe pe masina client
 Citeasca diverse proprietati ale sistemului de operare
al clientului
Ferestrele folosite de un applet, altele decât cea a
browserului, vor arata altfel decât într-o aplicatie
obisnuita.
27.05.2015 Curs - Aplicatii Java 47
copyright@www.adrian.runceanu.ro

2. Lucrul cu baze de date în Java

1. Generalitati despre baze de date


2. Ce este JDBC?
3. Conectarea la o baza de date
4. Efectuarea de secvente SQL
5. Obtinerea si prelucrarea rezultatelor
6. Exemplu

27.05.2015 Curs - Aplicatii Java 48


copyright@www.adrian.runceanu.ro

1. Generalitati despre baze de date


Definitie
O baza de date reprezinta o modalitate de stocare a unor
informatii (date) pe un suport extern, cu posibilitatea regasirii
acestora.
 Uzual, o baza de date este memorata într-unul sau mai multe
fisiere.
 Modelul clasic de baza de date este cel relational, în care datele
sunt memorate în tabele.
 Pe lânga tabele, o baza de date mai poate contine: proceduri si
functii, utilizatori si grupuri de utilizatori, tipuri de date, obiecte,
etc.
 Dintre producatorii cei mai importanti de baze de date amintim
Oracle, Sybase, IBM, Informix, Microsoft, etc.
27.05.2015 Curs - Aplicatii Java 49
copyright@www.adrian.runceanu.ro

1. Generalitati despre baze de date

Crearea unei baze de date


 Se face cu aplicatii specializate oferite de
producatorul tipului respectiv de baza de date.

Accesul la o baza de date


 Se face prin intermediul unui driver specific tipului
respectiv de baza de date.
 Acesta este responsabil cu accesul efectiv la datele
stocate, fiind legatura între aplicatie si baza de date.

27.05.2015 Curs - Aplicatii Java 50


copyright@www.adrian.runceanu.ro

2. Ce este JDBC?

Definitie
JDBC (Java Database Connectivity) este o interfata
standard SQL de acces la baze de date.

 JDBC este constituita dintr-un set de clase si


interfete scrise în Java, furnizând mecanisme
standard pentru proiectantii aplicatiilor de baze de
date.

 Pachetul care ofera suport pentru lucrul cu baze de


date este java.sql.

27.05.2015 Curs - Aplicatii Java 51


copyright@www.adrian.runceanu.ro

2. Ce este JDBC?

 Folosind JDBC este usor sa transmitem secvente SQL catre


baze de date relationale.
 Cu alte cuvinte, nu este necesar sa scriem un program
pentru a accesa o baza de date Oracle, alt program pentru a
accesa o baza de date Sybase si asa mai departe.
 Este de ajuns sa scriem un singur program folosind API-ul
JDBC si acesta va fi capabil sa trimita secvente SQL bazei de
date dorite.
 Bineînteles, scriind codul sursa în Java, ne este asigurata
portabilitatea programului.
 Deci, iata doua motive puternice care fac combinatia Java -
JDBC demna de luat în seama.

27.05.2015 Curs - Aplicatii Java 52


copyright@www.adrian.runceanu.ro

2. Ce este JDBC?

Fiind robust, sigur, usor de folosit, usor de înteles, Java


este un excelent limbaj pentru a dezvolta aplicatii
de baze de date.

In linii mari, JDBC face trei lucruri:


1. stabileste o conexiune cu o baza de date

2. trimite secvente SQL

3. prelucreaza rezultatele

27.05.2015 Curs - Aplicatii Java 53


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Procesul de conectare la o baza de date implica doua


operatii:

1. încarcarea în memorie a unui driver corespunzator

2. realizarea unei conexiuni propriu-zise

27.05.2015 Curs - Aplicatii Java 54


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Definitie

O conexiune (sesiune) la o baza de date reprezinta un


context prin care sunt trimise secvente SQL si
primite rezultate.

Intr-o aplicatie pot exista mai multe conexiuni


simultan la baze de date diferite sau la aceeasi baza.

27.05.2015 Curs - Aplicatii Java 55


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Clasele si interfetele responsabile cu realizarea unei


conexiuni sunt:
 clasa DriverManager, ce se ocupa cu înregistrarea
driverelor ce vor fi folosite în aplicatie
 interfata Driver, pe care trebuie sa o implementeze
orice clasa ce descrie un driver
 clasa DriverPropertyInfo
 interfata Connection, descrie obiectele ce modeleaza o
conexiune propriu-zisa cu baza de date

27.05.2015 Curs - Aplicatii Java 56


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Incarcarea în memorie a unui driver


 Primul lucru pe care trebuie sa-l faca o aplicatie în
procesul de conectare la o baza de date este sa încarce
în memorie clasa ce implementeaza driver-ul necesar
comunicarii cu respectiva baza de date.
 Acest lucru poate fi realizat prin mai multe modalitati:
1. DriverManager.registerDriver(new
sun.jdbc.odbc.JdbcOdbcDriver());
2. Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
3. System.setProperty("jdbc.drivers",
"sun.jdbc.odbc.JdbcOdbcDriver");
4. java -Djdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver

27.05.2015 Curs - Aplicatii Java 57


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

 O data ce un driver JDBC a fost încarcat în memorie


cu DriverManager, acesta poate fi folosit la stabilirea
unei conexiuni cu o baza de date.

 Având în vedere faptul ca pot exista mai multe


drivere înregistrate în memorie, trebuie sa avem
posibilitatea de a specifica pe lânga identificatorul
bazei de date si driverul ce trebuie folosit.

27.05.2015 Curs - Aplicatii Java 58


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Aceasta se realizeaza prin intermediul unei adrese


specifice, numita JDBC URL, ce are urmatorul format:
jdbc:sub-protocol:identificator_baza_de_date

 Câmpul sub-protocol denumeste tipul de driver ce


trebuie folosit pentru realizarea conexiunii si poate
fi odbc, oracle, sybase, db2 si asa mai departe.
Identificatorul bazei de date este un indicator
specific fiecarui driver care specifica baza de date cu
care aplicatia doreste sa interactioneze.

27.05.2015 Curs - Aplicatii Java 59


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

In functie de tipul driver-ului acest identificator poate


include numele unei masini gazda, un numar de port,
numele unui fisier sau al unui director, etc.

jdbc:odbc:testdb
jdbc:oracle:thin@persistentjava.com:1521:testdb
jdbc:sybase:testdb
jdbc:db2:testdb

27.05.2015 Curs - Aplicatii Java 60


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

 La primirea unui JDBC URL, DriverManager-ul va


parcurge lista driver-elor înregistrate în memorie,
pâna când unul dintre ele va recunoaste URL-ul
respectiv.

 Daca nu exista nici unul potrivit, atunci va fi lansata


o exceptie de tipul SQLException, cu mesajul no
suitable driver.

27.05.2015 Curs - Aplicatii Java 61


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

Realizarea unei conexiuni

Metoda folosita pentru realizarea unei conexiuni este


getConnection din clasa DriverManager si poate
avea mai multe forme:
Connection c = DriverManager.getConnection(url);
Connection c = DriverManager.getConnection(url,
username, password);
Connection c = DriverManager.getConnection(url,
dbproperies);

27.05.2015 Curs - Aplicatii Java 62


copyright@www.adrian.runceanu.ro

3. Conectarea la o baza de date

O conexiune va fi folosita pentru:

 crearea de secvente SQL ce vor fi folosite pentru


interogarea sau actualizarea bazei

 aflarea unor informatii legate de baza de date (meta-


date)

Clasa Connection asigura suport pentru controlul


tranzactiilor din memorie catre baza de date prin
metodele commit, rollback, setAutoCommit.
27.05.2015 Curs - Aplicatii Java 63
copyright@www.adrian.runceanu.ro

4. Efectuarea de secvente SQL

O data facuta conectarea 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.

Cele mai uzuale comenzi SQL sunt cele folosite pentru:


1. interogarea bazei de date (SELECT)
2. actualizarea bazei de date (INSERT, UPDATE, DELETE)

27.05.2015 Curs - Aplicatii Java 64


copyright@www.adrian.runceanu.ro

4. Efectuarea de secvente SQL

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");

Metoda executeQuery trimite interogari SQL catre


baza de date si primeste raspuns într-un obiect de tip
ResultSet.

27.05.2015 Curs - Aplicatii Java 65


copyright@www.adrian.runceanu.ro

5. Obtinerea si prelucrarea rezultatelor

Interfata ResultSet

String query = "SELECT cod, nume FROM angajati


ORDER BY nume";
ResultSet r = s.executeQuery( query );
while (r.next()) {
System.out.println (r.getString ("cod") + "," +
r.getString ("nume") );
}

27.05.2015 Curs - Aplicatii Java 66


copyright@www.adrian.runceanu.ro

5. Obtinerea si prelucrarea rezultatelor

Interfata ResultSetMetaData

ResultSet r = s.executeQuery("SELECT * FROM


angajati" );
ResultSetMetaData rsmd = r.getMetaData();
System.out.println("Coloane: " +
rsmd.getColumnCount());

27.05.2015 Curs - Aplicatii Java 67


copyright@www.adrian.runceanu.ro

Exemplu de conectare

import java.sql.*;
import java.io.*;
public class TestJDBC {
public static void main (String[] args) {
String dbUrl = "jdbc:odbc:test";
String user = "dba";
String password = "sql";

27.05.2015 Curs - Aplicatii Java 68


copyright@www.adrian.runceanu.ro

Exemplu de conectare

try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e) {
e.printStackTrace();
System.out.println("Eroare incarcare driver!\n" +
e);
}

27.05.2015 Curs - Aplicatii Java 69


copyright@www.adrian.runceanu.ro

try{
Exemplu de conectare
Connection c=DriverManager.getConnection(dbUrl, user,
password);
Statement s= c.createStatement();
ResultSet r = s.executeQuery(
" SELECT cod, nume FROM localitati"+
" ORDER BY nume");
while (r.next()) {
System.out.println (
r.getString ("cod") + "," +
r.getString ("nume") );
}
s.close();
}
catch(SQLException e) {
e.printStackTrace();
}
}
}7.05.2015
2 Curs - Aplicatii Java 70
copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

http://www.tutorialspoint.com/jdbc/jdbc-sample-
code.htm
// STEP 1. Import required packages
import java.sql.*;

public class FirstExample {


// JDBC driver name and database URL
static final String JDBC_DRIVER =
"com.mysql.jdbc.Driver";
static final String DB_URL =
"jdbc:mysql://localhost/EMP";

27.05.2015 Curs - Aplicatii Java 71


copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

// Database credentials

static final String USER = "username";


static final String PASS = "password";

public static void main(String[] args) {


Connection conn = null;
Statement stmt = null;

27.05.2015 Curs - Aplicatii Java 72


copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

try{
//STEP 2: Register JDBC driver
Class.forName("com.mysql.jdbc.Driver");
//STEP 3: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 4: Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);

27.05.2015 Curs - Aplicatii Java 73


copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

//STEP 5: Extract data from result set


while(rs.next()){
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}

27.05.2015 Curs - Aplicatii Java 74


copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

catch(SQLException se){
//Handle errors for JDBC
se.printStackTrace();
}
catch(Exception e){
//Handle errors for Class.forName
e.printStackTrace();
}

27.05.2015 Curs - Aplicatii Java 75


copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

finally{
//finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}
catch(SQLException se2){
}// nothing we can do
try{
if(conn!=null)
conn.close();
}
catch(SQLException se){
se.printStackTrace();
}//end finally try
}//end try
System.out.println("Goodbye!");
}//end main
}//end FirstExample
27.05.2015 Curs - Aplicatii Java 76
copyright@www.adrian.runceanu.ro

Exemplul 2 de conectare la o baza de date

C:\>java FirstExample

Connecting to database...
Creating statement...
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal

27.05.2015 Curs - Aplicatii Java 77


copyright@www.adrian.runceanu.ro

Întrebări?

27.05.2015 Curs - Aplicatii Java 78

S-ar putea să vă placă și