Conferenț iar Dr. Ionel MUSCALAGIU [618161]

UNIVERSITATEA POLITEHNICA TIMIȘOARA
FACULTATEA DE INGINERIE HUNEDOARA
DEPARTAMENTUL DE INGINERIE ELECTRICĂ ȘI
INFORMATICĂ INDUSTRIALĂ
SPECIALIZAREA TEHNICI INFORMATICE ÎN INGINERIA
ELECTRICĂ

LUCRARE DE DISERTAȚIE

Coordonator științ ific:
Conferenț iar Dr. Ionel MUSCALAGIU

Absolvent: [anonimizat]
2019

UNIVERSITATEA POLITEHNICA TIMIȘOARA
FACULTATEA DE INGINERIE HUNEDOARA
DEPARTAMENTUL DE INGINERIE ELECTRICĂ ȘI
INFORMATICĂ INDUSTRIALĂ
SPECIALIZAREA TEHNICI INFORMATICE ÎN INGINERIA
ELECTRICĂ

TEHNICI INFORMATICE
APLICATE LA EVIDENȚA
CONTRACTELOR DE DISTRIBUȚIE
A FURNIZORILOR DE ENERGIE
ELECTRICĂ

Coordonator științ ific:
Conferenț iar Dr. Ionel MUSCALAGIU
Absolvent: [anonimizat]
2019

PROIECT DE DIPLOMĂ

CUPRINS

CAPITOLUL I. Introducere………………………………………………………………………Pag. 1

CAPITOLUL II. Baze de date………………………………………………………………………… 3
2.1. Introducere in baze de date…………………………………………………………………….. …….. 3
2.2. Arhitectura unei baze de date…………………………………………………………………………. 3
2.3 Proiectarea bazelor de date relaționale………………………………………………… ………….. 5
2.4 Sisteme de gestiune a bazelor de date……………………………………………………………….5
CAPITOLUL III. Baze de date SQL Server
3.1. Arhitectura client -server……………………………………………………………………………. …….8
3.2 Prezentare generală……………………………………………………………………………. ………. ….9
3.3 Utilitare SQL SERVER…………………………………………………………………………………….10
3.4 Caracteristici ale unei baze de date SQL Server……………………… …………………………11
3.5 Limbajul T- SQL………………………………………………………………………………………………11

CAPITOL UL IV. Platforma .NET Framework…………….. …………………………………….15
4.1 .Net Framework ……………………………………………………………………………………………..15
4.2 Limbajul C#……………………………………………………………………………………………………1 6
4.3 ADO.NET………………………………………………………………………………………………………18
4.4 Visual Studio………………………………………………………………………………………………….2 1
CAPITOLUL V.Tehnci informatice aplicate la evidența contractelor de distribuție a
furnizorilor de energie electrică ………………………………………………… ……………………..38
5.1. Analiza problemei…………………………………………………………………………………. ………3 0
5.2. Proiectarea bazei de date……………………………………………………………………………….3 0
5.2.1. Proiectarea tabelelor bazei de date………………………………………………………………. 30
5.3. Realizarea interfeței aplicației…………………………………………………………………………. 34

PROIECT DE DIPLOMĂ

5.3.1. Forma ’’ Logare’’………………………………………………………………………………….. 35
5.3.2. Forma ’’ Panou utilizatior ’……………………………………………………………………… 36
5.3.3. Forma ’’ Clienți ’’………….. …………………………………………………………………… …..38
5.3.4. Forma ’Furnizori’’…………………………………………………………………………… …….41
5.3.5. Forma ’Servicii’’…………………… ………………………………….. …………………………. 45

Concluzii…………………………………………………………………………………………. ……………47

Bibliografie……………………………. ……………………………………….. …………………………48

LUCRARE DE DISERTAȚIE

1

Capitolul I

Introducere

Astazi domeniul economic are la dispozitie foarte multe solutii informatice ce permit
o mai buna gestiune a diverselor afaceri. Una din cea mai importantă aplicație a
calculatoarelor zilelor noastre o constituie memorarea și prelucrarea informațiilor. Acest
lucru se face folosind sisteme specia l dedicate prelucrării datelor numite sisteme de
gestiune a bazelor de date, sisteme ce operează c u baze de date. Ele reprezintă un
domeniu de interes foarte important din aria știin ței computerelor.
Lucrarea de față prezintă o „Aplicație informatică client -server aplicate la
evidența contractelor de distribuție a furnizorilor de energie electrică”, aplicație care
poate funcționa în cadrul sistemului informatic implementat în societate. Lucrarea propune
o soluție de integrare a bazelor de date SQL Server cu interfețe Visual Studio 2019 ,
folosind o soluție cu baze de date relaționale.
Lucrarea folosește baze de date SQL Server pentru stocarea datelor, iar pentru
construirea interfeței client , interfețe Visual Studio 2019 , utilizând limbajul de programare
C#. Soluția aleasă este simpla dar și modernă, permite stocarea datelor și accesarea lor
prin intermediul interfețelor client.

Proiectul prezentat , este structurat în cinci capitole astfel încât să fie prezentate atât
elemente descriptive necesare proiectării unui astfel de minisistem informatic, dar și elemente specifice bazelor de date, în particular prezentarea sistemului de tip SQL Server și a elementelor Microsoft Visual Studio, necesare părții de interfață astfel încât să fie prezentate toate elementele folosite la proiectarea sistemului informațional prezentat în această lucrare. În mod detaliat în lucrare es te prezentată proiectarea pas cu pas a
minisistemului, care conține elemente variate de programare cu baze de date de tip SQL Server și interfețe client necesitând Microsoft Visual Studio 201 9.
Capitolul II . Prezintă bazele de date, arhitectura lor, prec um și proiectarea lor .

Capitolul III. În acest capitol este prezentată funcționarea unui server. E ste făcută o
prezentare a serverului SQL urmată de caracteristicile serverului SQL.

Capitolul IV . În aces t capitol este prezentat mediul în care a fost realizată interfața
aplicației, acesta fiind Microsoft Visual Studio 2019 . Sunt prezentate noțiunile introductive
și arhitectura Microsoft Visual Studio.
Capitolul V. Acest capitol conține explicația aplicației client -server applicate la
evidența de distribuție a furnizorilor de energie electrică, realizată cu interfața Vi sual Studio

LUCRARE DE DISERTAȚIE

2
și cu baza de date realizată în SQL server. Sunt prezentate analiza problemei împreună cu
proiectarea bazei de date care conține tabelele și interfața aplicați ei.

LUCRARE DE DISERTAȚIE

3

CAPITOLUL II
BAZE DE DATE

2.1. Introducere în baze de date. Concepte ale bazelor de date.

Cea mai importantă func ție a calculatoarelor zilelor noastre, o constituie
memorarea și prelucrarea informațiilor . Acest lucru se face folosind sisteme special
dedicate prelucrării datelor numite sisteme de gestiune a bazelor de date ,
sisteme ce operează cu baze de date . Ele reprezint ă un domeniu de interes
foarte important din aria științei computerelor .
O bază de date este o colecție de date păstrate în memoria externă , date
păstrate și accesate prin intermediul computerelor și a sistemelor de gestiune a bazelor de date. Bazele de date sunt păstrate de diverse organizații sau întreprinderi în scopul regăsirii cât mai rapide a datelor, pentru monitorizare, supervizare sau planificare .
Operațiile asupra bazelor de date se fac prin intermediul unui pachet de
programe numit sistem de gestiune al bazei de date ( SGBD) . Acest SGBD se
ocupă de modelarea datelor ( alegerea modelelor de memorie folosite) , permire accesarea datelor , regăsirea acestora .
Din punct de vedere al sistemului de operare baza de date este f ormată din
fișiere diverse (datele propriu- zise , fișiere auxiliare ).

2.2. Arhitectura unei baze de date

Datele din baza de date sunt păstrate conform unui model de organizare,
utilizatorului fiindu -I accesibile și vizibile acele date conform unui model . Pentru a putea
fi gestionate, datele unei baze de date sunt descrise cu ajutorul unui limbaj specializat ce folosește structuri de date . Astfel se obțin mai multe structuri ale bazei de date.
Un sistem de baze de date poate fi văzut (structurat )din patru puncte de
vedere numite nivele: conceptual, extern, logic și fizic.

a.Nivelul conceptual

Este un nivel fundamental deoarece descrie într -un mod natural și fără
ambiguități sistemul ce urmează a fi modelat. Dacă o persoană este familiară cu un anumit sistem, atunci ea poate realiza designul acestuia fără a mai comunica cu alte persoane. În caz contrar, trebuie consultate mai multe persoane care sunt familiare
cu sistemul respectiv. În a cest nivel va fi realizată schema conceptuală ce
reprezintă design- ul general al sistemului bazei de date.

b.Nivelul extern

La nivel extern se specifică design- ul bazei de date perceput de un anumit
utilizator sau grup de utilizatori precum și modul în care acest design este legat de

LUCRARE DE DISERTAȚIE

4
schema conceptuală. Schema externă reprezintă specificarea informațiilor care pot
fi văzute de către un utilizator și modul în care acestea sunt prezentate. În cele mai
multe cazuri, un utilizator poate accesa doar o parte din informații. Schema
externă este realizată astfel încât grupuri diferite de utilizatori să acceseze numai anum ite subscheme ale schemei conceptuale globale. Mai mult, utilizatori diferiți pot
dori ca aceiași informație să fie reprezentată în moduri diferite (tabele, grafice) sau pot prefera anumite metode de operare sau navigare în funcție de nivelul de experiență acumulat. Prin urmare la acest nivel se pot proiecta diferite interfețe cu
utilizatorul.

c. Nivelul logic
Așa cum am văzut până acum, schema conceptuală este creată pentru a comunica,
adică pentru a reprezenta sistemul ce urmează a fi proiectat într -un mod cât mai clar.
Pentru a realiza o implementare eficientă această schemă conceptuală trebuie convertită într-o structură de nivel inferior. Prin urmare, pentru o anumită aplicație dată, se alege un
model logic adecvat de organizare a datelor (de exemplu, modelul relațional, ierarhic, rețea, etc.). Se mai spune că schema conceptuală este transformată într -o scem ă logică
exprimată cu ajutorul unor structuri abstracte de date și operații furnizate de modelul de date respectiv.

d. Nivelul intern

Dupa ce a fost realizată schema logică, aceasta trebuie proiectată prin intermediul
unei scheme interne într -un anumit SGBD (Sistem de Gestiune a Bazelor de Date). De
exemplu, schema relațională poate fi implementată în Oracle, Access, Visual Foxpro sau
DB2. Schema internă include toate detaliile despre stocarea fizică și structurile de acces utilizate în sistemul respecti v (de exemplu, indecși, clustere, etc.). Pentru același SGBD
pot fi alese diferite structuri de stocare, după cum și pentru SGBD -uri diferite există
structuri diferite. Prin urmare, pentru aceeași schemă logică pot fi alese mai multe scheme interne.

2.3. Proiectarea bazelor de date relaționale

Proiectarea bazelor de date relaționale. Metode de proiectare.

După mai bine de două decenii de folosire a modelului relațional, proiectarea
(designul) bazelor de date rămâne mai degrabă artă decât știință. Au fost sugerate un
număr de metode, dar până în prezent nici una nu e dominantă.
Proiectarea modelul relațional al datelor are ca scop obținerea unor colecții de
date ce respectă atât cerințele informaționale ale utilizatorului cât și restricțiile impuse de modelul relațional. În funcție de complexitatea bazei de date, există două metode de proiectare a modelului relațional:
a. Conceperea modelului relațional pe baza unui model conceptual semantic,
model numit modelul entitate -legătură (entitate- relație). Acesta permite modelarea

LUCRARE DE DISERTAȚIE

5
realității prin intermediul unor concepte abstracte: entități, asocieri și atribute. Este
metoda cea mai folosită în practică, mai ales pentru baze de date mari.
b. Conceperea modelului relațional prin procesul de normalizare, proces ce
presupune aplicarea formelor normale asupra unui set de atribute ce formează un
singur tabel. În urma normalizării va rezulta un set de tabele normalizate. Metoda se
poate aplica în cazul unor baze de date mici sau al construirii unor aplicații informati ce,
nu al unor sisteme informatice complexe.

Metodele curente de proiectare a bazelor de date sunt divizate în 3 etape
separate: crearea schemei conceptuale, crearea design- ului logic al bazelor de
date și crearea design- ului fizic al bazei de date.

1. Crearea schemei conceptuale. Aceasta este un design de nivel înalt
(incluzînd relațiile dintre datele întregului sistem), care descrie datele și relațiile
necesare pentru execuția operațiilor necesare, fiind independent de orice model de baze de date. D esignul de la acest nivel este foarte general, se realizează într -o
perioadă foarte scurtă de timp și prezintă modul în care grupările de date sunt integrate în sistemul de ansamblu.

2. Crearea design- ului logic al bazei de date. În această fază schema
conceptuală este transformată în structuri specifice unui anumit sistem de gestiune
a bazei de date. La acest nivel designul este rafinat, sunt definite elemente de date
specifice care sunt grupate în înregistrări.
În cazul modelului relațional, la sfârșitul acestei etape vom avea un număr de
tabele care vor permite stocarea și manipularea corectă a tuturor datelor necesare
sistemului.

3. Crearea design- ului fizic al bazei de date. În această etapă designul logic
este transformat într -o stuctură fizică efic ientă.
2.4. Sisteme de gestiune a bazelor de date (SGBD)
2.4.1. Definire. Funcț ii.

Accesul la baza de date se face cu ajutorul unui pachet de programe numit
SGBD. Acesta este un pachet de programe realizat de firme specializate, care
realizează gestiunea și prelucrarea complexă a datelor , asigurând independența programelor de aplicaț ie față de modul de structurare a datelor și un timp optim de
răspuns la solicitările utilizatorilor în condiții de multiacces.
S.G.B.D. trebuie să conține rutine care să permită mai multe funcții grupate ,
simplu , în patru clase : definire, manipulare , administrare , protecție.
Un SGBD nu este util dacă nu se poate comunica cu el, deci o primă funcție a
unui SGBD este de a asigura accesul utilizatorului la baza de date. Prin aceasta se înțelege atât definirea structurilor din baza de date cât și manipularea și interogarea
(extragerea și prelucrarea) datelor din baza de date. În plus, utilizatorul trebuie să
aibă la dispoziție modalități de a controla integritatea și securitatea datelor. Cu alte

LUCRARE DE DISERTAȚIE

6
cuvinte, comunicarea cu baza de date presupune ur mătoarele patru funcțiuni
principale:

-Definirea structurilor de date. Un SGBD trebuie să furnizeze un Limbaj de
Definire a Datelor (Data Definition Language, DDL) care permite definirea (crearea,
modificarea și distrugerea) schemei bazei de date, adică a structurilor de date
folosite și a legăturilor dintre acestea.
-Manipularea datelor. Odată create structurile din baza de date, trebuie permisă
inserarea de date în aceasta, precum și actualizarea sau ștergerea celor existente.
– Interogarea datelor. Un SGBD trebuie să permită extragerea, vizualizarea și
prelucrarea (filtrarea, stocarea, etc.) datelor existente.
-Controlul datelor. Limbajul de Control al Datelor (Data Control Language, DCL)
permite asigurarea securității și confidențialității datelor, salvarea datelor și
realizarea fizică a modificărilor în baza de date, garantarea integrității și consistenței
datelor în cazul manipulării concurente.
-Securitate datelor. Securitatea este o preocupare constantă în proiectarea și
dezvoltarea bazelor de date. În mod uzual, nu se pun probleme legate de existența securității, ci mai de grabă de cât de mare va fi aceasta.
-Menținerea și constrângerea integrității. Integritatea datelor se referă la
consistența și corectitudinea acestora. Pentru ca datele să fie consistente, ele
trebuie modelate și implementate în același mod pentru toate circumstanțele. Pentru ca datele să fie corecte, ele trebuie să fie exacte, precise și să aibă înțeles. Prin integritate datele devin informații.
-Asigurarea accesului concurent la date. În plus, în cazul existenței mai multor
utilizatori, un SGBD trebuie să gestioneze accesul concurent al acestora, menținând
în același timp integritatea bazei de date. Vom spune în acest caz că SGBD -ul
gestionează concurența bazei de date. Concurența poate fi definită ca
simultaneitate în sensul că doi sau mai mulți utilizatori accesează aceleași date în aceiași perioadă de timp.
-Tranzacții. Întregul mecanism care gestionează concurența într -o bază de date are
la bază conceptul de tranzacție. Tranzacția este cea mai mică unitate de lucru.
Aceasta înseamnă că nu poate exista nici o operație mai mică decât o tranzacție.

2.4.2. Structura si funcționarea unui SGBD

Complexitatea unui SGBD rezidă în dimensiunea sa, reflectată nu numai în
multitudinea instrucțiunilor sale dar și în mulțimea componentelor, fiind prin complexitatea
apropiat de un sistem de operare . SGBD lucrează de fapt sub controlul sistemului de
operare al calculatorului, S.O. care se ocupă de suportul hard al bazei de date.
În mod obișnuit, un SGBD conține următoarele module :
– monitor : cuprinde modul specializate pentru gestionarea bazei de date, a zonelor de
memorie internă, a rețelei de transmisie și a mesajelor cu terminalele care accesează bazele de date cât și module pentru activarea proceselor, asigurarea legăturii cu sistemul de operare. – compilatoare : sunt module asociate limbajelor de descriere și manipulare , având rol de
verificare și translatare a comenzilor către sistemul de operare. – monitoare de înlănțuire : asigură succesiunea fazelor distincte de prelucrare
(execuția programelor sau execuția directă a comenzilor).

LUCRARE DE DISERTAȚIE

7
– programe utilitare: editoare de texte pentru a putea scrie codul programelor,
generatoare de rapoarte, module de securitate(fișiere de urmărire), etc.

Din punct de vedere schematic, funcționarea unui SGBD se poate reprezenta
astfel:

2.4.3. Structura si functionarea unui SGBD. Clasificarea SGBD -urilor si a
bazelor de date.

În funcție de modelul de date al bazei de date există SGBD -uri ierarhice, relaționale
(cele mai multe ) și rețea.
SGBD ierarhic. Modelul ierarhic stochează datele în structuri de tip arbore.
SGBD rețea. Modelul rețea stochează datele sub formă de înregistrări și
legături între acestea.
SGBD relațional (SGBDR). Modelul relațional reprezintă probabil cea mai
simplă structură pe care o poate avea o bază de date.

LUCRARE DE DISERTAȚIE

8

În acest capitol s -au folosit informații din [1],[2 ],[3].

LUCRARE DE DISERTAȚIE

8

CAPITOLUL III
Baze de date SQL Server

3.1. Arhitectura Client/Server

Asistăm la promovarea arhitecturilor client/server (C/S) și în cazul bazelor de date.
Aceste arhitecturi se fondează, în esență, pe un dialog între două categorii de entități,
entitatea Client (care interoghează baza de date) și respectiv entitatea Server (care
gestionează baza de date), dispuse într -o rețea de calculatoare.

Clientul – este entitatea care asigură interfața cu utilizatorul, lansează cereri
de executare a unor operații către o entitate server și se ocupă de punerea într -o
anumită formă a datelor primite de la server în urma executării operației.
Serverul – este entitatea care recepționează, interpretează și execută cererile
(operațiile) lansate de clienți. De asemenea, el furnizează răspunsul către client.
Cele două entități se pot găsi s ub formă de calculatoare diferite, sau pot
conviețui pe același calculator. În această din urmă situație, calculatorul trebuie să aibă instalat un sistem de operare multi -proces, cele două entități menționate
regăsindu- se sub formă de procese distincte. Un client poate să efectueze cereri
către mai multe servere, iar un server poate satisface cererile lansate de mau mulți clienți. Sintetic, dialogul realizat într -un sistem client -server, se poate reprezenta
astfel :

CLIENT SERVER
transmitere
mesaj cerere recepție

recepție mesaj răspuns

Un sistem C/S funcționează într -o rețea de calculatoare, calculatoarele din
rețea netrebuind să fie omogene. Din punct de vedere al adresării într -o rețea de
calculatoare, în contextul arhitecturii client/server, serverul trebuie întotdeauna să se Aplicație
(proceduri de
interfă și de
) Interpretare/execuție
operații (proceduri de gestiune BD )
SGBD
BD

LUCRARE DE DISERTAȚIE

9
găsească la o singură adresă, sau la un set de adrese stabilite. Clienții pot lansa
cererile de oriunde neavând nevoie de o adresă fixă. În cazul în care adresa
asociată unui server este independentă de modul de adresare din rețeaua unde este amplasat, acesta poat e fi reamplasat practic oriunde fără a afecta procesele
clienților.

În cazul în care într -o rețea de calculatoare bazată pe arhitectura C/S pot fi
conectate calculatoare eterogene, transmisiile efectuate între clienți și server sunt codificate diferit fii nd necesar un protocol de schimb standard pentru codificare (la
transmisie) și decodificare (la recepție). În momentul de față sunt definite mai multe protocoale standard de schimb : XDR elaborat de firma SUN, COURRIER, elaborat de firma XEROX, ASN1 elabor at de CCIT, etc.

CLIENT CODIFICARE recepție mesaj SERVER

mesaj DECODIFICAR E
smitere CODIFICARE
răspuns
recepție transmitere

3.2. Prezentarea generală SQL Server

Firma Microsoft este prezentă pe piața bazelor de date cu trei SGBD -uri :
Access, Visual FoxPro și SQL Server (în prezent acesta a ajuns la versiunea SQL
Server 2008). SGBD -ul SQL Server , se încadrează în categoria servere- lor de baze
de date, adică acea categorie de sisteme de gestiune a bazelor de date care
facilitează realizarea de aplicații C/S, ce permit acc esul concurent la o bază de date.
Dintre avantajele pe care acesta le oferă se poate mentiona:
– scalabilitatea: SQL Server poate rula pe o varietate foarte mare de platforme
hardware (de la sisteme laptop până la servere multiprocesor).
Pentru a ușura dezvoltarea de aplicații, SQL Server posedă același model de
programare care este utilizat pentru toate sistemele de operare Windows (95, 98,
NT Workstation, NT Server, 2000, XP, Vista, 7);
De asemenea, este optimizat pentru baze de date foarte mari ( VLDB – Very
Large Database) putând să gestioneze baze de date de 200MB, 300MB.
Procesorul de interogări dispune de noi metode de acces la date astfel încât
execuția interogărilor SQL să fie foarte rapidă. În plus, în cazul unor servere multiprocesor, procesorul de interogări poate împărți o interogare în mai multe părți,
fiecare fiind executată de către un procesor, iar apoi rezultatele sunt combinate pentru obținerea răspunsului final, reducându- se astfel substanțial timpul necesar
execuției unei interogări.
– baze de date multidimensionale : SQL Server cuprinde instrumente pentru
extragerea și analizarea datelor (instrumente OLAP – Online Analytical
Processing și instrumente Data Mining);
Aplicație Interpretare/e
xecuție
operație

LUCRARE DE DISERTAȚIE

10
– integrarea cu alte produse software : este integrat cu servere de e- mail ( MS
Exchange), de web ( MS Internet Information Service);
– permite formularea și execuția interogărilor cu ajutorul utilitarului English Query în
locul interogărilor SELECT;
– acceptă lucrul cu documente XML (începând cu versiunea SQL Server 2000);
– ușurință în instalare, utilizare și dezvoltarea de aplicații : cuprinde o serie de
instrumente de administrare ( SQL Service Manager, Enterprise Manager, Sql
Server Management ) și dezvoltare de aplicații ( Query Analyzer ) care cresc foarte
mult productivitatea.

3.3. Utilitare SQL Server

SQL Server dispune de un set de programe (utilitare) care simplifică foarte mult
administrarea bazei de date și crearea de aplicații ce folosesc acest tip de server de baze
de date.

3.4. Caracteristici ale unei baze de date SQL Server

O bază de date este organizată în componente logice vizibile utilizatorilor :
tabele care conțin înregistrări, vederi ( views ), indecși, proceduri stocate și
declanșatori ( triggers ).
Fizic, o bază de dat e constă din cel puțin două fișiere :
– un fișier primar de date ( primary data files) este punctul de plecare al bazei de
date, conținând pe lângă date, și referințe la toate celelalte fișiere ale bazei de date ;

LUCRARE DE DISERTAȚIE

11
– un fișier jurnal care stochează toate modificările efectuate asupra bazei de
date, putând fi utilizat pentru refacerea bazei de date în cazul unei erori ;
În plus, pot exista mai multe fișiere secundare de date ( secondary data file)
care conțin acele date care nu sunt stocate în fișierul primar pentru că unele baze
de date pot fi suficient de mari astfel încât să fie necesară și existența unor fișiere
secundare cu date.
Fiecare instalare de SQL Server conține mai multe baze de date. Astfel, există
patru baze de date sistem : master, model, tempdb și msdb și două sau mai multe
baze de date utilizator (pubs, Northwind) .

3.5. Limbajul T -SQL

3.5.1. Comenzi pentru realizarea bazei de date

T-SQL (Transact -SQL) reprezintă varianta de limbaj SQL care este implementată de
SQL Server.
Pentru realizarea unei baze de date se poate utiliza comanda CREATE
DATABASE care are următoarea sintaxă simplificată (elementele care sunt
încadrate de paranteze [….] sunt opționale):
CREATE DATABASE nume
[ ON PRIMARY (FILENAME=’ nume_fisier1.mdf ’ ) ]
[ LOG ON (FILENAME=’ nume_fisier2.ldf ’) ]
unde :
– nume : reprezintă numele bazei de date ;
– ON PRIMARY : specifică explicit faptul că ’nume_fisier1.mdf reprezintă
fișierul primar al bazei de date ;
– LOG ON : permite specificarea explicită a numelui fișierului jurnal (log) prin
nume_fisier2.ldf .
Pentru eliminarea unei baze de date se folosește comanda :
DROP DATABASE nume_bază_de_date care șterge complet o bază de date,
inclusiv toate datele și structura fiz ică de pe disc.
Pentru crearea unei tabele se folosește comanda CREATE TABLE cu
următoarea sintaxă (simplificată) :
CREATE TABLE nume_tabela
(
câmp1 [ , câmp2, câmp3 …
)
iar fiecare câmp are următoarea sintaxă :
nume_tip_de _data [ IDENTITY ]
[ NULL | NOT NULL ]
{ PRIMARY KEY | FOREIGN KEY
REFERENCES tabel_ref(câmp_ref)
[ ON DELETE { CASCADE | NO ACTION } ]
ON UPDATE { CASCADE | NO ACTION } ] }
unde :
– nume : reprezintă numele câmpului ;
– tip_de_dată : specifică tipul câmpului. Principalele tipuri de câmpuri sunt :

LUCRARE DE DISERTAȚIE

12
– tinyint : valori întregi între 0 și 255, smallint : valori întregi între –32.768 și
+32.768, int : valori întregi între –2 31 și +2 31-1, float : numere reale între –1.79 *
10308 și +1.79 * 10308, real : numere reale între –3.40 * 1038 și +3.40 * 1038,
– money : folosit pentru stocarea sumelor de bani, datetime : folosit pentru
reprezentarea timpului,
– char (n) : șir de caracter cu lungimea fixă de maxim n caractere, varchar (n) :
șir de caracter de lungime variabilă cu max im n caractere, text : șir de caractere de
lungime variabilă care poate stoca maxim 2.147.483.647 caractere ;
– IDENTITY : câmpul respectiv va avea valori unice generate automat de SQL
Server prin incrementarea cu o unitate, această opțiune este echivalent ă tipului
autonumber din Access sau Visual Studio. Această opțiune se poate folosi doar
pentru câmpuri de tip tinyint, smallint, int. Se folosește de obicei împreună cu
opțiunea PRIMARY KEY permițând identificarea în mod unic a fiecărei înregistrări
dintr-un tabel. Un tabel poate conține doar un singur câmp IDENTITY;
Echivalentul pentru modul de creare cu Enterprise Manager este uniqueidentity.
– opțiunile NULL și NOT NULL specifică dacă atributul respectiv permite valori
nule sau nu;
– PRIMARY KEY : câmpul este cheie primară ;
– FOREIGN KEY : câmpul este cheie externă, tabel_ref specifică tabela la care
se face referință, iar câmp_ref specifică câmpul la care cheia externă face referință ;
– ON DELETE : permite specificarea acțiunii care va fi realizată în cazul
ștergerii unor înregistrări din tabela părinte : CASCADE – vor fi șterse și
înregistrările corespunzătoare din tabela copil sau nu – NO ACTION ;
– ON UPDATE : permite specificarea acțiunii care va fi realizată în cazul
modificării unor înregistrări din tabela părinte : CASCADE – vor fi modificate și
înregistrările corespunzătoare din tabela copil sau nu – NO ACTION ;
Tabelele temporare sunt eliminate automat atunci când utilizatorul termină
sesiunea de lucru sau când conexiunea cu baza de date este închisă.
Pentru a crea o tabelă temporară, în numele unui tabel trebuie să se includă
caracterul #, astfel :
CREATE TABLE #tabel1
( camp1 INT camp2 CHAR(25) )
Pentru eliminarea unui tabel dintr -o baz ă de date se folosește comanda :
DROP TABLE nume_tabela.

3.5.2. Vederi în bazele de date
Obiecte complexe în SQL. Vederi.
O vedere (VIEW). Este un obiect al BD care poate fi considerat ca fiind o
tabelǎ virtualǎ adicǎ o tabelǎ pentru care se pastreazǎ în BD doar schema nu și
datele. Poate fi utilizatǎ în orice interogare ca și un tabel. Cu anumite restricții dependente de SGBD ele pot fi utilizate și în op. de actualizare.
Din punct de vedere al SQL orice vedere este alcatuitǎ dintr -o instrucțiune
SELECT pǎstratǎ permanent ca un obiect dinstinct al BD.
O vedere este de obicei folositǎ pentru a încapsula o operație de joncțiune mai
complicatǎ sau o interogare utilizatǎ frecvent. Poate fi utilizatǎ pentru a oferi unui

LUCRARE DE DISERTAȚIE

13
utilizator numai datele de care are nevoie sau la care are drept de acces. Aceasta
înseamnǎ cǎ atunci când se atribuie drepturile de acces pentru diverși utilizatori se vor atribui drepturi de acces la diverse vederi dar nu și la tabelele pe baza cǎrora se construiește vederea.
Coloanele unei ve deri pot fi coloane extrase dintr -o tabelǎ, din alta vedere sau
coloane calculate. Se observǎ cǎ o vedere poate sǎ facǎ apel la o alta vedere. În final trebuie sǎ se ajungǎ la tbelul de bazǎ sau expresii care nu utilizeazǎ tabele ci funcții.
Ex: GETDATE ( )  returneazǎ ora, minutele, secundele, data.
SQL Server nu suportǎ decât vederi statice. Pentru a simula o vedere
temporalǎ valabilǎ doar pe durata unei sesiuni de lucru se creazǎ o vedere staticǎ în BD predefinitǎ
tempbd.
Crearea unei vederi în SQL Ser ver e posibilǎ numai în BD pentru care e
definitǎ. Crearea vederii se realizeazǎ cu ajutorul comenzii: CREATE VIEW.
Sintaxa comenzii este:
CREATE VIEW[proprietar]nume_vedere[(lista_coloane)]
[WITH <atribute_vedere>[,..n]]
AS
Comanda_SELECT
[WITH CHECK OPTIONS]
<atribute_vedere>::={ENCRIPTION|SCHEMA BINDING}
Parametrii comenzii au urmatoarele semnificații:
– nume vedere = numele vederii care trebuie sǎ respecte toate regulile impuse
– lista coloane = parametru opțional cu numele coloanei dintr -o vedere. Se va
utiliza doar dacǎ numele unora dintre coloanele vederii diferǎ de numele coloanei corespunzǎtoare din tabloul de bazǎ sau existǎ coloane calculate cǎrora trebuie sǎ le dǎm un nume. În acest ult im caz putem da nume coloanei calculate în comanda
SELECT folosind aliasul de coloanǎ. Dacǎ lista lipsește, numele coloanei este identic cu cel din comanda SELECT prin care definim vederea.

Opțiunea WITH CHECK OPTION obligǎ ca în cazul în care se folos esc
comenzi de actualizare, toate operațiile de actualizare a datelor executate asupra unei vederi trebuie sǎ respecte regulile de integritate impuse de comanda SELECT
din vedere. Aceasta este necesar, deoarece în lipsa unei opțiuni o linie introdusǎ fǎrǎ sǎ respecte clauza impusǎ de SELECT va dispare de pe ecran dupǎ
actualizare. Dacǎ se utilizeazǎ aceastǎ opțiune, toate liniile introduse vor aparea pe ecran.
Opțiunea WITH ENCRIPTION asigurǎ criptarea textului comenzii de creare a
vederii pentru ca acesta sa nu poatǎ fi vizualizat. Nu se recomadǎ decât într -o
versiune finalǎ.
Opțiunea WITH SCHEMA BINDING asigurǎ integritatea structuralǎ a unei
vederi în sensul cǎ nici o tabela și nici o vedere care participǎ la realizarea unei vederi cu aceastǎ clauzǎ nu vor putea fi eliminate și nu modificǎ structura pânǎ
când vederea afectatǎ nu este eliminatǎ.
Când introducerea BD se realizeazǎ printr -o vedere, sistemul verificǎ dacǎ
toate obiectele referite existǎ, dacǎ sunt valide și dacǎ modificarea datelor nu violea zǎ regimul de integritate a datelor. Dacǎ cel puțin o verificare eșueazǎ,

LUCRARE DE DISERTAȚIE

14
interogarea este abandonatǎ și se returneazǎ un mesaj de eroare. Dacǎ toate
verificǎrile s -au finalizat cu succes, interogarea asupra vederii va fi transformatǎ
automat într -un set de interogǎri asupra conținutului tabloului de bazǎ.
În cazul în care un tabel sau o vedere care intrǎ în definirea vederii interogate
este eliminat și apoi recreat, vederea va putea fi utilizatǎ ca și cǎnd nimic nu s -ar fi
întâmplat. Dacǎ tabelul șters e recreat cu o structurǎ diferitǎ care poate afecta structura vederii, vederea va trebui ștearsǎ și apoi recreatǎ.
În cazul în care comanda de creare a unei vederi face parte dintr -o succesiune
de comenzi SQL ce vor fi lansate împreunǎ în execuție, comanda CREATE VIEW trebuie sǎ fie prima din lista de comenzi . Pentru a elimina aceastǎ cerințǎ vom
utiliza comanda GO. Între 2 comenzi GO se considerǎ o secvențǎ de comenzi independente de celelalte.

3.5.3. Proceduri stocate
Alt tip de obiecte care pot fi incluse într -o bază de date sunt procedurile
stocate. A cestea reprezintă subprograme care conțin grupuri mari de instrucțiuni
SQL. O procedură stocată conține comenzi care sunt executate mai des în cadrul
aplicației. Astfel, utilizatorul poate apela procedura prin numele ei în locul executării repetate a comenzilor din cadrul ei. Avantajul major al procedurilor stocate este dat de viteza lor de execuție, ele fiind mult mai rapide decât execuția separată a fiecărei
comenzi SQL din cadrul lor.
În acest capitol s- au folosit informații din : [4],[5],[7].

LUCRARE DE DISERTAȚIE

15
CAPITOLUL IV
PLATFORMA .NET FRAMEWORK

4.1. Software -ul .Net Framework

4.1.1 Prezentare generală
Platforma .NET este un cadru de dezvoltare a softului, sub care se vor
realiza, distribui si rula aplicaț iile de tip forme Windows, aplicaț ii WEB și servicii
WEB. Ea constă în trei părț i principale: Common Language Runtime, clasele
specifice platformei și ASP.NET. O infrastructură ajutătoare, Microsoft .NET
Compact Fr amework este un set de interfeț e de programare care permite
dezvol tatorilor realizarea de aplicaț ii pentru dispozitive mobile precum telefoane
inteligente si PDA- uri.
.NET Framework constit uie un nivel de abstractizare între aplicaț ie și
nucleulul sistemului de operare (sau alte programe), pentru a asigura portabilitatea
codului; de asemenea integrează tehnologii care au fost lansate de catre Microsoft
incepâ nd cu mijlocul anilor 90 (COM, DCOM, ActiveX, etc) sau tehnologii actuale
(servicii Web, XML).

4.1.2 Componente ale .NET Framework

Common Intermediate Language

Printre caracteristicile ingineriei software se numara si abstractizarea,
dorindu- se ferirea utilizatorului de detalii despre mecanisme pentru a fi mai usor de
atins scopul. Se pot modifica detalii interne si interfata sa ramana neschimbata
neafectand acti unile celorlalti beneficiari ai codului.
In cazul limbajelor de programare s -a ajuns la creare unui nivel de
abstractizare a codului rezultat la compilare precum p- code sau binecunoscutul
bytecode de la Java. Bytecode- ul Java este generat prin compilarea f isierului sursa,
fiind scris intr -un limbaj intermediar care suporta programarea obiect orientata.
Bytecode- ul este caracterizat de abstractizare care permite executarea unui cod
Java indiferent de platforma pe care se lucreaza atata timp cat aceasta are o
masina virtuala implementata capabila a traduce fisierul class in cod nativ.
Microsoft a realizat si el propria abstractizare de limbaj Common Intermediate
Language. Desi exista numeroare limbaje de programare de nivel inalt (C#, Managed C++, Visual Basic .NET, etc) toate vor produce cod in acelasi limbaj
intermediar la compilare: Common Intermediate Language. Acesta are trasaturi obiect orientate, cum ar fi abstractizarea datelor, polimorfismul, mostenirea datelor, precum si concepte extrem de necesare ca exceptiile si evenimentele.
Abstractizarea de limbaj permite rularea aplicatiilor indiferent de platforma atat timp cat exista o masina virtuala pentru acea platforma.

LUCRARE DE DISERTAȚIE

16

4.2 Limbajul C#

4.2.4.Sintaxa limbajului
Ca și limbajul C++ cu care se înrudește, limbajul C# are un al fabet format din
litere mari și mici ale alfabetului englez, cifre și alte semne. Vocabularul l imbajului
este format din acele „simboluri” cu semnificații lexicale în scrierea programelor:
cuvinte (nume), expresii, separator i, delimitatori și comentarii.

Comentarii
Limbajul C# admite trei tipuri de comentarii:
 comentariu pe un rând prin folosirea //. Tot ce urmează după caracterele // sunt
considerate, din acel loc până la sfârșitul rândului, drept comentarii .

//Acesta este un comentariu pe un singur rând

 comentariu pe mai multe rânduri prin folosirea /* și */. Orice text cuprins
întresimbolurile menționate mai sus se consideră a fi comentariu. Simbolurile /*
reprezintă începutul comentariului, iar */ sfârșitul respectivului comentariu.

/* Acesta este un
comentariu care se
intinde pe mai multe randuri */

 creare document în format XML folosind ///. Nepropunându- ne să intrăm în
amănunte, amintim că XML (eXtensible Markup Language) a fost proiectat în scopul
trans ferului de date între aplicații pe Internet, fiind un model de stocare a datelor
nestructurate și semi -structurate.
Nume
Definiție: Prin nume dat unei variabile, clase, metode etc. înțelegem o
succesiune de caractere care îndeplinește următoarele reguli:
 numele trebuie să înceapă cu o literă sau cu unul dintre caracterele ” _” și ”@”;
 primul caracter poate fi urmat numai de litere, cifre sau un caracter de subliniere;
 numele care reprezintă cuvinte cheie nu pot fi folosite în alt scop decât acela
pentru car e au fost definite;
 cuvintele cheie pot fi folosite în alt scop numai dacă sunt precedate de @;
 două nume sunt distincte dacă diferă prin cel puțin un caracter (fie el și literă mică ce diferă de aceeași literă majusculă).

Convenții pentru nume:
 în cazul numelor claselor, metodelor, a proprietăților, enumerărilor, interfețelor, spațiilor de nume, fiecare cuvânt care compune numele începe cu majusculă;
 în cazul numelor variabilelor, dacă numele este compus din mai multe cuvinte, primul începe cu minusculă, celelalte cu majusculă.

Cuvinte cheie in C#
Cuvintele cheie sunt identificatori predefiniți cu semnificație specială pentru
compilator.
Definim în C# următoarele cuvinte cheie:

LUCRARE DE DISERTAȚIE

17

abstract as base bool break
byte case catch char checked
class const continue decimal default
delegate do double else enum
event explicit extern false finally
fixed float for foreach goto
if implicit in int interface
internal is lock long namespace
new null object operator out
override params private protected public
readonly ref return sbyte sealed
short sizeof stackalloc static string
struct switch this throw true
try typeof uint ulong unchecked
unsafe ushort using virtual void
volatile while

Pentru a da semnificații specifice codului, în C# avem și cuvinte cheie
contextuale:

ascending by descending equals from
get group into join let
on orderby partial select set
value where yield
În general, cuvintele cheie nu pot fi folosite în programele pe care le scriem,
dându- le o altă semnificație. În cazul în care, totuși, dorim să le dăm o altă
semnificație, va trebui să le scriem cu simbolul „ @” ca prefix. Datorită neclarităților
care pot să apară, se va evita folosirea cuvintelor rezervate în alte scopuri.

Constante
În C# există două modalități de declarare a constantelor: folosind const sau
folosind modificatorul readonly. Constantele declarate cu const trebuie să fie
inițializate la declararea lor.

Exemplul 1:

const int x; //gresit, constanta nu a fost initializata
const int x = 13; //corect

Constantele declarate cu ajutorul lui readonly sunt doar v ariabilele membre ale
claselor, ele putând fi inițializate doar de către constructorii claselor respective.

LUCRARE DE DISERTAȚIE

18
Exemplul 2:

readonly int x; //corect
readonly int x = 13; //corect

Variabile
O variabilă în C# poate să conțină fie o valoare a unui tip elementar, fie o
referință la un obiect. C# este „case sensitive”, deci face distincție între litere mari și
mici.

Exemplul 3:

int variabila;
char caracter;

Expresii și operatori
Definiție: Prin expresie se înțelege o secvență formată din operatori și
operanzi . Un operator este un simbol ce indică acțiunea care se efectuează, iar
operandul este valoarea asupra căreia se execută operația.
Operatorii se împart în trei categ orii:
 Unari: – acționează asupra unui singur operand
 Binari: – acționează între doi operanzi
 Ternari: – acționează asupra a trei operanzi; există un singur operator ternar
și acesta este ?:
În C# sunt definiți mai mulți operatori. În cazul în care într -o expresie nu
intervin paranteze, operațiile se execută conform priorității operatorilor. În cazul în care sunt mai mulți operatori cu aceeași prioritate, evaluarea expresiei se realizează
de la stânga la dreapta. În tabelul de mai jos prioritatea descrește de la 0 la 13.

4.3 .ADO .NET

ADO.NET (ActiveX Data Objects) reprezintă o parte componentă a nucleului
.NET Framework ce permite conectarea la surse de date di verse, extragerea,
manipularea ș i actualizarea datelor.
De o bicei, sursa de date este o bază de date, dar ar putea de asemenea să
fie un fișier text, o foaie Excel, un fișier Access sau un fiș ier XML.
În aplicațiile tradiționale cu baze de date, clienț ii stabile sc o conexiune cu
baza de date ș i mențin această conexiune deschisă până la încheierea execut ării
aplica ției.
Conexiunile deschise necesit ă alocarea de resurse sistem. Atunci când
menț inem mai multe conexiuni deschise server -ul de baze de date va r ăspunde mai

LUCRARE DE DISERTAȚIE

19
lent la comenzile clienț ilor întrucât cele mai multe baze de date permit un num ăr
foarte mic de conexiuni concurente.
ADO.NET permite și lucrul în stil conectat dar și lucrul în stil deconectat,
aplica țiile conectându- se la server -ul de baze de date numai pentru extragerea și
actualizarea datelor. Acest lucru permite reducerea num ărului de conexiuni deschise
simultan la sursele de date.

4.3.1. Componentele unui furnizor de date
Fiecare furnizor de date ADO.NET constă î n patru componente: Connection,
Command , DataReader , DataAdapter .

Componenta DataAdapter
Folosirea combinat ă a obiectelor DataAdapter și DataSet permite operaț ii de
selectare, ștergere, modificare și ad ăugare la baza de date. Clasele DataAdapter
genereaz ă obiecte care func ționeaz ă ca o interfaț ă între sursa de date și obiectele
DataSet interne aplicaț iei, permi țând prelucr ări pe baza de date. Ele gestioneaz ă
automat conexiunea cu baza de date astfel încât conexiunea s ă se fac ă numai
atunci când este imperios necesar.
Un obiect DataSet este de fapt un set de tabele relaț ionate. Folosește
serviciile unui obiect DataAdapter pentru a- și procura datele și trimite modific ările
înapoi c ătre baza de date. Datele sunt stocate de un DataSet în format XML, același
folosit și pentru transferul datelor.
În exemplul urmă tor se p reiau datele din tablele elevi și profesori :
SqlDataAdapter de=new SqlDataAdapter(“SELECT nume, clasa FROM
elevi”, conn);
de.Fill(ds,”Elevi”);//transferă datele în datasetul ds sub forma
unei tabele locale numite elevi
SqlDataAdapter dp=new SqlDataAdapter(“SELECT nume, clasdir FROM
profesori”,conn);
dp.Fill(ds,”Profesori”);//transferă datele în datasetul ds sub forma unei
tabele locale numite profesori

4.3.2. DataSet

Un DataSet este format din Tables (colec ție format ă din obiecte de tip
DataTable; DataTable este compus la rândul lui dintr -o colec ție de DataRow și
DataColumn), Relations (colec ție de obiecte de tip DataRelation pentru memorarea
legăturilor p ărinte–copil) și ExtendedProperties ce conț ine propriet ăți definite de
utilizator.
Scenariul uzual de lucru cu datele dintr -o tabel ă conține urm ătoarele etape:
 popularea succesiv ă a unui DataSet prin intermediul unuia sau mai multor
obiecte DataAdapter, apelând metoda Fill (vezi exemplul de mai sus)
 procesarea datelor din DataSet folosind numele tabelelor stabilite la umplere,
ds.Tables[“elevi”], sau indexarea acestora, ds.Tables[0], ds.Tables[1]

LUCRARE DE DISERTAȚIE

20
 actualizarea datelor prin obiecte comandă corespunz ătoare operaț iilor INSERT,
UPDATE și DELETE. Un obiect CommandBuilder poate construi automat o
combinaț ie de comenzi ce reflect ă modific ările efectuate.
Așadar, DataAdapter deschide o conexiune doar atunci când este nevoie și
o inchide imediat aceasta nu mai este necesar ă.
De exemplu DataAdapter realizeaz ă următoarele operaț iuni atunci când
trebuie sa populeze un DataSet:deschide conexiunea, populeaza DataSet -ul,
închide conexiunea și urmato ărele operaț iuni atunci când trebuie sa fac ă update pe
baza de date: deschide conexiunea, scrie modificarile din DataS et in baza de
date,inchide conexiunea. Intre operaț iunea de populare a DataSet -ului și cea de
update conexiunile sunt inchise. Intre aceste operaț ii în DataSet se poate scrie sau
citi.
Crearea unui obiect de tipul DataSet se face folosind operatorul new.
Exemplu: DataSet dsProduse = new DataSet ();
Constructorul unui DataSet nu necesit ă parametri. Exist ă totuși o
supraînc ărcare a acestuia care primește ca parametru un string și este folosit atunci
cand trebuie s ă se fac ă o serializare a datelor într -un fisier XML. In exemplul anterior
avem un DataSet gol și avem nevoie de un DataAdapter pentru a -l popula.
Un obiect DataAdapter conț ine mai multe obiecte Command (pentru
inserare, update, delete și select) și un obiect Connection pentru a citi și scrie date.
În exemplul urm ător construim un obiect de tipul DataAdapter, daProd.
Comanda SQL specific ă cu ce date va fi populat un DataSet, iar conexiunea conn
trebuie s ă fi fost creată anterior, dar nu și deschis ă. DataAdapter -ul va deschide
conexiunea la apelul metodelor Fill și Update.

SqlDataAdapter daProd =
new SqlDataAdapter (“SELECT ID_PRODUS, DENUMIRE_PRODUS FROM
PRODUSE”, conn);

Prin intermediul constructorului putem instanț ia doar comanda de interogare.
Instanț ierea celorlalte se face fie prin intermediul propriet ătilor pe care le expune
DataAdapter, fie folosind obiecte de tipul CommandBuilder. SqlCommandBuilder ;
cmdBldr = new SqlCommandBuilder (daProd);
La ini țializarea unui CommandBuilder se apleleaz ă un construc tor care
prime ște ca parametru un adapter, pentru care vor fi construite comenzile.
SqlCommandBuilder are nu poate construi decât comenzi simple și care se aplic ă
unui singur tabel. Atunci cand trebui ca sa facem comenzi care vor folosi mai multe
tabele es te recomandat ă construirea separat ă a comnezilor și apoi atasarea lor
adapterului folosind propriet ăți.
Popularea DataSet -ului se face după ce am construit cele două instanț e:
daProd.Fill (dsProduse, “PRODUSE”);
În exemplul urm ător va fi populat DataSet -ul dsProduse. Cel de- al doilea
parametru (string) reprezint ă numele tabelului (nu numele tabelului din baza de
date, ci al tabelului rezultat în DataSet) care va fi creat. Scopul acestui nume este identificarea ulterioar ă a tabelului. În cazul în care nu sunt specificate numele
tabelelor, acestea vor fi adă ugate în DataSet sub numele Table1, Table2, …

LUCRARE DE DISERTAȚIE

21
Un DataSet poate fi folosit ca surs ă de date pentru un DataGrid din Windows
Forms sau ASP.Net .

Exemplu:
DataGrid dgProduse = new DataGrid();
dgProduse.DataSource = dsProduse;
dgProduse.DataMembers = “PRODUSE”;

După ce au fost f ăcute modific ări într- un DataSet acestea trebuie scrise și în
baza de date. Actualizarea se face prin apelul metodei Update.
daProd.Update (dsProduse, “PRODUSE”);

4.4 Visual Studio

4.4.1. Obiecte Visual Studio pentru construirea interfețelor client.

Pentru a începe lucrul în Visual Studio 2010, trebuie creat un nou proiect din meniul
care apare odată cu deschiderea programului sau din meniul File -New Project.

Figura 4.1

Din chenarul din partea stângă a ferestrei se alege limbajul de programare utilizat
pentru noul proiect. Acest proiect a fost realizat în limbajul de programare C#. O
sumedenie de alte limbaje de programare sunt suportate de Visual Studio 2017

LUCRARE DE DISERTAȚIE

22
Ultimate(ex: Visual Basic, C++, F#, JavaScript, Cobol, etc), care a venit si cu o nouă
versiune de .NET Framework, si anume .NET Framework 4.0.

4.4.2. Formulare

În cadrul aplicațiilor cu baze de date, tabelele sunt actualizate prin intermediul
unor machete specializate numite formulare (forms) . Formularele asigură:
a. Interfață prietenoasă cu utilizatorul final, realizată prin intermediul
diferitelor controal e (butoane, casete text, etc.) sau alte elemente grafice
încorporate;
b. Actualizarea concomitentă a mai multor tabele prin intermediul
subformularelor;
c. Reguli de validare suplimentare celor definite la nivelul tabelelor.
Formularele din Visual Studio 2010 crează interfața utilizatorului pentru tabele,
având avantajul prezentării datelor într -un mod atrăgător și organizat. Formularele
sunt compuse dintr -o colecție de elemente constructive individuale denumite
controale sau obiecte de control. Formular ele pot conține și subformulare.
Proiectarea unei ferestre are la bază un cod complex, generat automat pe măsură
ce noi desemnăm componentele și comportamentul acesteia. În fapt, acest cod
realizează: derivarea unei clase proprii din System.Windows.Forms. Form, clasă
care este înzestrată cu o colecție de controale (inițial vidă). Constructorul ferestrei
realizează instanțieri ale claselor Button, MenuStrip, Timer etc. (orice plasăm noi în
fereastră) și adaugă referințele acestor obiecte la colecția de contr oale ale ferestrei.
Dacă modelul de fereastră reprezintă ferestra principală a aplicației, atunci ea este instanțiată automat în programul principal (metoda Main ). Dacă nu, trebuie să
scriem noi codul care realizează instanțierea.
Clasele derivate din For m moștenesc o serie de proprietăți care determină atributele
vizuale ale ferestrei (stilul marginilor, culoare de fundal, etc.), metode care implementează anumite comportamente ( Show , Hide, Focus etc.) și o serie de
metode specifice ( handlere) de tratare a evenimentelor ( Load, Click etc.).
O fereastră poate fi activată cu form.Show() sau cu form.ShowDialog() , metoda a
doua permițând ca revenirea în fereastra din care a fost activat noul formular să se
facă numai după ce noul formular a fost închis (spunem că formularul nou este
deschis modal ).

Formularele se pot crea foarte ușor din meniul Project -Add Windows Form :

LUCRARE DE DISERTAȚIE

23

Figura 4.2
4.4.3. Modificarea proprietăților formularului.

Pentru a modifica aspectul formularului creat se va lucra cu fereastra de
proprietăți. Avand formularul selectat, în colțul din dreapta jos avem fereastra de proprietăți :

LUCRARE DE DISERTAȚIE

24

Figura 4.3
În această fereastră avem posibilitatea modificării complete a formularului, prin
modificarea anumitor proprietăți cum ar fi :
(Name) – numele pe c are îl va avea formularul în acest proiect.
BackColor – culoarea de fundal a formularului.
BackgroundImage – posibilitatea inserării unei imagini pe fundalul formularului.
FormBordersStyle – oferă posibilitatea modificării marginilor formularului,
precum ș i blocarea lor pentru a nu face posibilă modificarea lor de către utilizator.

LUCRARE DE DISERTAȚIE

25
Icon – alegerea unei iconițe pentru formular, un obiect de tip *.ico (colțul din
stânga sus).
MaximizeBox/MinimizeBox – determina daca formularul are sau nu
posibilitatea maximizării / minimizării.
Opacity – pentru a regla procentul de opacitate al formularului.
Size ( Width și Height ) – determină marimea formularului (rezoluția sa).
StartPosition – determină determină poziția ferestrei atunci când aceasta
apare prima dată. Poziția poate fi setată Manual , sau poate fi centrată pe desktop
(CenterScreen), stabilită de Windows, formularul având dimensiunile și locația
stabilite de programator ( WindowsDefaultLocation) sau Windows -ul va stabili
dimensiunea inițială și locația pentru formular ( WindowsDefaultBounds) sau, centrat
pe formularul care l -a afișat (CenterParent ) atunci când formularul va fi afișat modal.
Text – titlul formula rului, care v -a fi afișat către utilizator, etc.

4.4.4. Adăugarea de controale pe formular.

Pentru a realiza acest lucru, mai întâi trebuie accesată caseta cu instrumente
Visual Studio 2017 : Toolbox -ul. De -alungul părții stângi a programului ar trebui să
găsim o etichetă Toolbox, care poate fi accesată cu un simplu click.
Această fereastră conține toate controalele care pot fi folosite pentru a
construi o interfață grafică pentru utilizator în cadrul unei aplicații Windows.

4.4.5. Prezentarea casetei cu instrumente Visual C# . Controale în formulare.

După cum am văzut, controalele sunt obiecte grafice (elemente vizuale) ce
sunt incluse în formulare sau rapoarte, în scopul editării/afișării datelor sau
executării unor acțiuni (ex.: etichete, casete text, butoane, etc.). Adăugarea
controalelor se poate face numai în etapele de creare sau modificare a formularelor,
astfel:

a) Din fereastra Toolbox se selectează butonul aferent controlului dorit;
b) Se descrie, cu ajutorul mouse -lui, o zonă dreptunghiulară pe suprafața
formularului, definind astfel poziția și dimensiunea noului control.

Controalele pot fi clasificate în funcție de următoarele criterii:
a. Rol :
• Controale pentru editarea și afișarea datelor (ex.: casetele text, etic hetele
etc.);

LUCRARE DE DISERTAȚIE

26
• Controale pentru executarea unor acțiuni (ex :butonul de
comandă);
• Controale pentru afișarea graficelor (ex.: imagini, etc.).

b. Sursa de date:
• Controale legate (bounds) – sunt controale ce afișează sau editează datele
din câmpuri (ex.: o casetă text ce va actualiza câmpul Data factură din tabela
Factură)',
• Controale nelegate (unbounds) – sunt independente de realizările
câmpurilor, așadar, nu permit actualizarea acest ora, în general, din această
categorie fac parte controalele calculate (ex.: o casetă text ce va afișa totalul
facturii), dar și controalele care, prin însuși specificul lor, nu pot fi atașate câmpurilor
(ex.: butoanele de comandă, etichetele, etc.).

c. Structură:
• Controale elementare (butoane, casete text, etichete etc.)
• Controale container – înglobează alte controale (ex.: grup de opțiuni).
Principalele controalele disponibile în fereastra Toolbox sunt prezentate mai
jos:

LUCRARE DE DISERTAȚIE

27

Figura 4.4

LUCRARE DE DISERTAȚIE

28
Instr. Denumire Funcție

Pointer Permite selecția unuia sau a mai
multor obiecte de pe formular.

Button Crează un buton care, atunci când
este apasat, declanșează un eveniment
care poate executa o procedură.

CheckBox Crează o casetă de validare care
comută din starea On în starea Off la dispoziția userului.

CheckedListBo
x Crează o casetă pentru afișarea unei
liste de date cu câte un checkbox în fața fiecarei date.

ComboBox Crează o casetă combinată cu o
casetă de text editabilă în care se poate introduce o valoare, precum și o listă derulantă din care se poate selecta o valoare.

DateTimePicker Crează o casetă care permite userului
să aleagă o data anume, si să o afișeze într-un anumit format.
Label Crează o etichetă text.
LinkLabel Crează o etichetă text care permite
utilizarea hyperlink -ului precum și
formatarea acestuia.
ListBox Crează o casetă cu listă derulantă din
care se poate selecta o valoare.

ListView Crează o casetă cu listă derulantă cu
foarte multe opțiuni de editare, din care se poate selecta o valoare.
MonthCalendar Crează un calendar lunar din care
userul poate selecta o dată dorită.
NotifyIcon Afișează o iconiță în zona de notificare
(lângă ceas) pe timpul rulării.
NumericUpDow
n Afișează o valoare numerică pe care
userul o poate incrementa / decrementa.
PictureBox Afișează o imagine pe formular sau
intr-un raport.
Crează o bară dinamică, care se

LUCRARE DE DISERTAȚIE

29
ProgressBar umple pentru a indica userului progresul
unei operațiuni.

RadioButton Permite userului să selecteze o
singură opțiune dintr -un grup, atunci când
se află în grup cu alte RadioButton- uri.

TextBox Permite userului să introducă un text,
si permite mascarea caracterelor la
introducerea unei parole.

Tooltip Afișează informații adiționale atunci
când userul poziționează cursorul peste alt
control asociat tooltip- ului.
WebBrowser Permite userului să navigheze pe
Internet în interiorul formularului.

Acestea reprezintă cele mai utilizate controale folosite pe forumulare.
În timpul proiectării, un control poate fi selectat prin efectuarea unui click pe
controlul respectiv sau prin selectarea lui din ToolBox . Selecția multiplă se poate
realiza prin menținerea apăsată a tastei <Ctrl> în timpul selectării fiecărui control.
Ștergerea controlului selectat se face cu ajutorul tastei <Delete> sau prin
selectarea opțiunii Edit/Delete din meniul sistem.

4.4.6. Event -urile controalelor.

Proprietățile unui control sunt afișate în fereastra Properties, atunci când
controlul respectiv este selectat. Ca și în cazul formularelor, metodele aferente
controalelor sunt grupate în două categorii (Properties și Events).
Definire a unei funcții de tratare a unui eveniment asociat controlului se realizează
prin selectarea grupului Events din ferestra Properties a controlului respectiv și
alegerea evenimentului dorit.
Proprietățile din categoria Events conțin denumirile funcțiilor, procedurilor
eveniment sau macro- urilor, ce vor fi executate la declanșarea evenimentelor
atașate (ex: în urma modificării textului unui TextBox, în urma accesării unui control
prin click, în urma încărcării formularului, etc.). Dacă nu scriem nici un nume pentru
funcția de tratare, ci efectuăm dublu click în căsuța respectivă, se generează
automat un nume pentru această funcție, ținând cont de numele controlului și de
numele evenimentului (de exemplu button1_Click).

În acest capitol s- au folosit informații din : [6],[7],[8],[9].

LUCRARE DE DISERTAȚIE

30
CAPITOLUL V

TEHNICI INFORMATICE APLICATE LA EVIDENȚA
CONTRACTELOR DE DISTRIBUȚIE A FURNIZORILOR DE ENERGIE
ELECTRICĂ

5.1 Analiza problemei

În aplicația de fațǎ s -a pus problema implement ării unei aplicații care să rețină informații
despre evidența contractelor de distribuție a furnizorilor de energie electrică. Se dorește
crearea unei aplicații care gestioneze distribuția curentului electic .
Fiecare client poate avea unul sau mai mulți furnizori dar și unul sau mai multe servicii .
Astfel, pe baza datelor existente în baza de date aplicația interfață trebuie să
permită:
♦ Vizualizarea clienților și a informațiilor despre aceștia.
♦ Evidența furnizorilor împreună cu date despre aceștia.
♦ Gestiunea serviciilor .

5.2 Proiectarea bazei de date

5.2.1 Proiectare tabelelor bazei de date

Baza de date a fost creată în Visual Studio și este de tip Microsoft SQL Server
database.

LUCRARE DE DISERTAȚIE

31

Baza de date va fi următoarea:
Tabelele bazei de date Distribuția curentului electric.db :

Vom prezenta mai departe, fiecare table împreună cu rolul și structura
acestuia:

LUCRARE DE DISERTAȚIE

32

Tabela “ Clienți ”, reține informații despre clienți existenți :

Tabela „ Furnizori ”, reține informații în legătură cu furnizorii de energie:

LUCRARE DE DISERTAȚIE

33

Tabela „Servicii”, reține informații în legătură cu serviciile furnizorilor de energie:

LUCRARE DE DISERTAȚIE

34

5.3 Realizarea interfeței aplicației

Interfața a fost realizată în Microsoft Visual Studio 201 9, folosind limbajul de
programare Visual C#.

LUCRARE DE DISERTAȚIE

35

5.3.1 Forma “ Logare ”

În aceasta formă, utilizatorul trebuie să introducă datele de autentificare,
aceastea se află în baza de date în tabelul Users.
Codul folosit în spatele acestei forme este următorul:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DistributieEnergieElectrica
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{

LUCRARE DE DISERTAȚIE

36
if (string.IsNullOrEmpty(txtUser.Text) &&
string.IsNullOrEmpty(txtPass.Text))
{
MessageBox.Show("Introduceti numele de utilizator si parola.",
"Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtUser.Focus();
return ;
}
try
{
using (dbProducatorEnergieElectricaEntities test = new
dbProducatorEnergieElectricaEntities())
{
//using linq to query data
var query = from o in test.Administratori
where o.Username == txtUser.Text && o.Password ==
txtPass.Text select o;
//check if user exists
if (query.SingleOrDefault() != null )
{
MessageBox.Show("Ai fost logat cu succes.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Information);
//Add your code process login here
MeniuPrincipal mp = new MeniuPrincipal();
mp.Show();
this.Hide();
}
else
{
MessageBox.Show("Utilizatorul sau parola sunt incorecte." ,
"Message", MessageBoxButtons.OK, MessageBoxIcon.Information); }
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

private void Login_Load(object sender, EventArgs e)
{
}
}
}

5.3.2 Forma “ Panou utilizator ” conține butoane care îndeplinesc diferite
funcții necesare în utilizarea aplicației. Acestea sunt prezentate mai jos.

using System;
using System.Collections.Generic;

LUCRARE DE DISERTAȚIE

37
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DistributieEnergieElectrica
{
public partial class MeniuPrincipal : Form
{
public MeniuPrincipal()
{
InitializeComponent();
}

private void btnFormClienti_Click(object sender, EventArgs e)
{
FormClienti fm = new FormClienti();
fm.Show(); }

private void BtnFormFurnizori_Click(object sender, EventArgs e)
{
FormFurnizori ff = new FormFurnizori();
ff.Show(); }
private void Button1_Click(object sender, EventArgs e)
{
Application.Exit(); }

private void BtnFormServicii_Click(object sender, EventArgs e)
{
FormServicii fs = new FormServicii();
fs.Show(); }
}
}

LUCRARE DE DISERTAȚIE

38

5.3.3 Forma “Clienți ” conține butoane care îndeplinesc funcții necesare afișării și
introducerii noilor clienți.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Entity.Infrastructure;
using System.Data.Entity;

namespace DistributieEnergieElectrica
{
public partial class FormClienti : Form
{
dbProducatorEnergieElectricaEntities dbEnt;
public FormClienti()
{
InitializeComponent();
}

private void FormClienti_Load(object sender, EventArgs e)
{
panel1.Enabled = false;
dbEnt = new dbProducatorEnergieElectricaEntities();

LUCRARE DE DISERTAȚIE

39
clientiBindingSource.DataSource = dbEnt.Clienti.ToList();
}
private void btnNew_Click(object sender, EventArgs e)
{
try
{

panel1.Enabled = true;
Clienti c = new Clienti();
dbEnt.Clienti.Add(c); clientiBindingSource.Add(c);
clientiBindingSource.MoveLast();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void btnEdit_Click(object sender, EventArgs e)
{
panel1.Enabled = true;
}
private void btnCancel_Click(object sender, EventArgs e)
{
panel1.Enabled = false;
clientiBindingSource.ResetBindings(false); foreach(DbEntityEntry entry in dbEnt.ChangeTracker.Entries())
{
switch (entry.State)
{
case EntityState.Added:
entry.State = EntityState.Detached; break;
case EntityState.Modified:
entry.State = EntityState.Unchanged;
break;
case EntityState.Detached:
entry.Reload();
break;

}
}

}

private void btnSave_Click(object sender, EventArgs e)
{
try
{
clientiBindingSource.EndEdit();

LUCRARE DE DISERTAȚIE

40
dbEnt.SaveChangesAsync();
panel1.Enabled = false;
MessageBox.Show("Salvare cu succes.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Information);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);
c lientiBindingSource.ResetBindings(false);
}
}

private void panel1_Paint(object sender, PaintEventArgs e)
{

}

private void btnStergere_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Sunteți sigur ca vreti să ștergeți
această înregistrare?", "Mesaj", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
dbEnt.Clienti.Remove(clientiBindingSource.Current as
Clienti);
clientiBindingSource.RemoveCurrent();
}
}
}
}

LUCRARE DE DISERTAȚIE

41

5.3.4 Forma “Furnizori” conține informații despre furnizori.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DistributieEnergieElectrica
{
public partial class FormFurnizori : Form
{
dbProducatorEnergieElectricaEntities dbEnt; public FormFurnizori()
{
InitializeComponent();
}

private void DataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e)
{

}

private void Label1_Click(object sender, EventArgs e)
{

}
private void ComboBox1_SelectedIndexChanged(object sender,
EventArgs e)
{

}
private void BtnNew_Click(object sender, EventArgs e)
{
try {
panel1.Enabled = true;
Clienti c = new Clienti();
dbEnt.Clienti.Add(c);
furnizoriBindingSource.Add(c);
furnizoriBindingSource.MoveLast();
}
catch (Exception ex)
{

LUCRARE DE DISERTAȚIE

42
MessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);

}
}

private void BtnNew_Click_1(object sender, EventArgs e)
{
try {

panel1.Enabled = true;
Furnizori f = new Furnizori();
dbEnt.Furnizori.Add(f); furnizoriBindingSource.Add(f);
furnizoriBindingSource.MoveLast();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}

private void BtnEdit_Click(object sender, EventArgs e)
{
panel1.Enabled = true;
}

private void BtnCancel_Click(object sender, EventArgs e)
{
panel1.Enabled = false;
furnizoriBindingSource.ResetBindings(false);
foreach (DbEntityEntry entry in dbEnt.ChangeTracker.Entries())
{
switch (entry.State)
{
case EntityState.Added:
entry.State = EntityState.Detached;
break;
case EntityState.Modified:
entry.State = EntityState.Unchanged;
break;
case EntityState.Detached:
entry.Reload();
break;

}
}
}
private void BtnDelete_Click(object sender, EventArgs e)
{

LUCRARE DE DISERTAȚIE

43
if (MessageBox.Show("Sunteți sigur ca vreti să ștergeți
această înregistrare?", "Mesaj", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
dbEnt.Furnizori.Remove(furnizoriBindingSource.Current as
Furnizori);
furnizoriBindingSource.RemoveCurrent();
}
}

private void BtnSave_Click(object sender, EventArgs e)
{
try
{
furnizoriBindingSource.EndEdit();
dbEnt.SaveChangesAsync();
panel1.Enabled = false;
MessageBox.Show("Salvare cu succes.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message",
MessageBoxButtons.OK, MessageBoxIcon.Error);
furnizoriBindingSource.ResetBindings(false);
}
}

private void FormFurnizori_Load(object sender, EventArgs e)
{
panel1.Enabled = false;
dbEnt = new dbProducatorEnergieElectricaEntities();
furnizoriBindingSource.DataSource = dbEnt.Furnizori.ToList();
}
}
}

LUCRARE DE DISERTAȚIE

44

LUCRARE DE DISERTAȚIE

45

5.3.5 Forma “ Servicii ” conține informații despre servicii.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace DistributieE nergieElectrica
{
public partial class FormServicii : Form
{
dbProducatorEnergieElectricaEntities dbEnt;
public FormServicii()
{
InitializeComponent(); }

private void DataGridView1_CellContentClick(object sender,
DataGridViewCellEventArgs e) {

}
private void BtnNew_Click(object sender, EventArgs e)
{
try {

panel1.Enabled = true;
Servicii s = new Servicii();
dbEnt.Servicii.Add(s);
serviciiBindingSource.Add(s);
serviciiBindingSource.MoveLast();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK,
MessageBoxIcon.Error);

}
}

private void FormServicii_Load(object sender, EventArgs e)
{
panel1.Enabled = false;
dbEnt = new dbProducatorEnergieElectricaEntities();
serviciiBindingSource.DataSource = dbEnt.Servicii.ToList();
}

LUCRARE DE DISERTAȚIE

46

private void BtnEdit_Click(object sender, EventArgs e)
{
panel1.Enabled = true ;
}
private void BtnSave_Click(object sender, EventArgs e)
{
try
{
serviciiBindingSource.EndEdit();
dbEnt.SaveChangesAsync();
panel1.Enabled = false;
MessageBox.Show("Salvare cu succes.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Information);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Message", MessageBoxButtons.OK,
MessageBoxIcon.Error);
serviciiBindingSource.ResetBindings(false);
}
}

private void BtnCancel_Click(object sender, EventArgs e)
{
panel1.Enabled = false;
serviciiBindingSource.ResetBindings(false);
foreach (DbEntityEntry entry in dbEnt.ChangeTracker.Entries())
{
switch (entry.State)
{
case EntityState.Added:
entry.State = EntityState.Detached;
break;
case EntityState.Modified:
entry.State = EntityState.Unchanged;
break;
case EntityState.Detached:
entry.Reload(); break;

}
}
}

private void BtnDelete_Click(object sender, EventArgs e)
{
if (MessageBox.Show( "Sunteți sigur ca vreti să ștergeți această
înregistrare?", "Mesaj", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes) {
dbEnt.Servicii.Remove(serviciiBindingSource.Current as Servicii);
serviciiBindingSource.RemoveCurrent();
}
}
}

LUCRARE DE DISERTAȚIE

47
}

CONCLUZII
Sistemele de gestiune a bazelor de date sunt printre cele mai importante
unelte informatice. Acestea sunt folosite într -o mare parte din domeniile de activitate
cu importanță.

Această lucrare folosește așa ceva pentru a ușura stocarea statisticii
jucătorilor unor echipe naționale . Se folosesc tehnolologii informatice existente pe
platforma NET FRAMEWORK de la Microsoft.
Studiul de caz propune o soluție de integrare a bazelor de date SQL cu
interfețe realizate în mediul Visual Studio. Sunt alese baze de date relaționale, iar
interfata este programată în Visual C#.

LUCRARE DE DIZERTAȚIE

48
BIBLIOGRAFIE

[1]. Grupul BDASEIG – Baze de date. Fundamente teoretice și practice, Editura Infomega,
2002.

[2]. Octavian Bâscă – Baze de date, Editura ALL, 1998.
[3]. Florescu V, Staciu V. – Baze de date, Editura Economic ă, Bucuresti 1999.

[4]. Muscalagiu I, Petras. T. – Baze de date. SGBD -ul Visual FoxPro , Editura Mirton,
Timisoara 2002.

[5]. Kevin Kline – SQL in a Nutshell: A desktop quick reference, O’Reilly & Associates,
2000.
[6]. Herbert Schildt, C#: A Beginner’s Guide,(2001) .
[7]. MSDN Microsoft – Documentația pentru Microsoft Visual Studio, SQL Server.
[8]. Karli Watson, Beginning C# 2005 Databases, Wiley Publishing, Inc (2006);

[9]. Bradley L. Jones, SAMS Teach Yourself the C# Language in 21 Days, ( 2004);

Similar Posts