Sei sulla pagina 1di 78

Universitatea Constantin Brncui din Trgu-Jiu

Facultatea de Inginerie
Departamentul de Automatic, Energie i Mediu

Aplicaii 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, avnd 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, apelnd 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 strns 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, dndu-i astfel posibilitatea sa se opreasca
temporar ct timp nu este vizibil, pentru a nu
consuma inutil din timpul procesorului.
Acelasi lucru se ntmpla daca fereastra browserului
este minimizata.
In momentul cnd 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 nct 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
reprezentnd 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 nct 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,
pna 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 cnd applet-ul nu mai este vizibil (la
apelul metodei stop) si sa reporneasca atunci cnd
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 continnd
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, putnd 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 dect cea a
browserului, vor arata altfel dect 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 lnga 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, furniznd 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.
Binenteles, 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.

Avnd n vedere faptul ca pot exista mai multe


drivere nregistrate n memorie, trebuie sa avem
posibilitatea de a specifica pe lnga 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

Cmpul 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,
pna cnd 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

ntrebri?

27.05.2015 Curs - Aplicatii Java 78

Potrebbero piacerti anche