0% au considerat acest document util (0 voturi)
4 vizualizări17 pagini

M22 Programare Client/Server

Notă de curs în programarea Client/Server ADO.Net M22: Programare C/S ADO.Net Formator: Driouch Bouazza Stabiliment: OFPPT/CFMOTI 18/02/2010 V1.5 http://www.driouchb.0fees.net/ www.cfmoti.0fees.net Plan Definiție (Generalități, Arhitectură N-tier) Framework .Net / ADO.Net Conexiune la o bază de date (Conexiune) Mod conectat (Commad, DataReader) Mod deconectat (DataSet, DataAdapter) Mod deconectat (DataTable, Relație) Control utilizator Utilizarea procedurii stocate și tranzacții DataSet tipizat Editarea rapoartelor (CrystalReport) Dezvoltare

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
4 vizualizări17 pagini

M22 Programare Client/Server

Notă de curs în programarea Client/Server ADO.Net M22: Programare C/S ADO.Net Formator: Driouch Bouazza Stabiliment: OFPPT/CFMOTI 18/02/2010 V1.5 http://www.driouchb.0fees.net/ www.cfmoti.0fees.net Plan Definiție (Generalități, Arhitectură N-tier) Framework .Net / ADO.Net Conexiune la o bază de date (Conexiune) Mod conectat (Commad, DataReader) Mod deconectat (DataSet, DataAdapter) Mod deconectat (DataTable, Relație) Control utilizator Utilizarea procedurii stocate și tranzacții DataSet tipizat Editarea rapoartelor (CrystalReport) Dezvoltare

Tradus de

ScribdTranslations
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

M22 : Programare C/S

[Link]
Formateur : Driouch Bouazza
Establishment: OFPPT/CFMOTI
18/02/2010 V1.5
[Link]

DRIOUCH B. [Link] 1

Plan
Definiț ie (Generalitate, Arhitectura N-tier)
.Net Framework / [Link]
Conexiune la o bază de date (Conexiune)
Mod conectat (Comandă, Cititor de date)
Mod Deconectat (DataSet, DataAdapter)
Mod Deconectat (DataTable, Relaț ie)
Control utilizator
Utilizarea Procedurii de Stocare ș i Tranzacț ie
Tip de set de date

Editarea rapoartelor (CrystalReport)


Dezvoltare
DRIOUCH B. [Link] 2

Prezentare
Multe aplica ț ii func ț ionează după un
mediu client/servitor, aceasta înseamnă că ma ș inile
clienț ii contactent serverul nostru, o maș ină de obicei foarte
puternică în termeni de capacităț i de intrare-ieș ire, care le furnizează
servicii. Aceste servicii sunt programe care furnizează
informaț ii precum ora, fiș iere, o conexiune,…
Serviciile sunt exploatate de programe, numite
programe clienț i, care se execută pe maș inile clienț ilor. Pe
vorbeș ti astfel despre client FTP, client de mesagerie, ..., atunci când se
denumeste un program, care ruleaza pe o masina clienta,
capabil să prelucreze informa ț iile pe care le recuperează de la
server (în cazul clientului FTP este vorba despre fiș iere, în timp ce
pentru clientul de mesagerie se referă la corespondenț a electronică).

DRIOUCH B. [Link] 3
Avantages / Inconvénients
Modelul client/server este în mod special
recomandat pentru reț ele care necesită un mare
nivel de fiabilitate, principalele sale avantaje sunt:
•resurse centralizate
o securitate mai bună
o administra ț ie la nivel de server
•o re ț ea evolutivă
Arhitectura client/servitor are totuș i câteva
lacune printre care:
un cost ridicat
o verigă slabă
DRIOUCH B. [Link] 4

Funcț ionare
Un sistem client/server funcț ionează conform
schemă următoare:

Clientul emite o cerere către server


graț ie adresei ș i portului, care desemnează un
serviciu particular al serverului
Serverul primeș te cererea ș i răspunde cu ajutor
de la adresa maș inii client ș i portul său
DRIOUCH B. [Link] 5

Arhitectură la 2 ș i 3 niveluri

Arhitectura à două niveluri


caracterizează les sisteme
clien ț i/servere în care
clientul solicită o resursă ș i
serverul i-l furnizează direct.

În arhitectura pe 3 niveluri (numită arhitectură 3-


există un nivel intermediar, adică că se
are în general o arhitectură partajată între:
• Le client: le demandeur de ressources
• Serverul de aplicaț ie (numit ș i middleware):
serverul responsabil de furnizarea resursei dar făcând
apel la un alt server
• Serverul secundar (de obicei un server de
bază de date), oferind un serviciu primului
server
DRIOUCH B. [Link] 6
Arhitectură multi-nivele
În arhitectură à 3
niveluri, fiecare server
(nivelurile 1 ș i 2) efectuează o
tâche (un serviciu) specializat.
Astfel, un server poate folosi
serviciile unuia sau mai multora
alte servere pentru a oferi
propriul său serviciu. Prin
consecin ț ă, arhitectura à
trei niveluri est
potenț ial una
arhitectură pe N niveluri...
DRIOUCH B. [Link] 7

Framework Dotnet
.NET este o platformă completă pentru a dezvolta, a implementa ș i a rula
aplicaț ii Web, Windows, mobile ș i server. Platforma se bazează
despre no ț iunea de framework care este un cadru de lucru care oferă instrumente ș i
specificaț ii necesare pentru a dezvolta ș i a desfăș ura aplicaț ii.

Frameworkul .NET este conceput pentru a îndeplini următoarele obiective:


• Furnizaț i un mediu coerent de programare orientată pe obiect pe care
codul obiect să fie stocat ș i executat local, executat local, dar distribuit
pe Internet sau executat de la distanț ă.
• Furnizaț i un mediu de execuț ie a codului care minimalizează desfăș urarea de
software-uri.
• Furnizaț i dezvoltatorului un mediu coerent între o varietate mare de
tipuri de aplicaț ii cum ar fi aplicaț iile Windows ș i aplicaț iile Web.
• Genera ț i toate comunicările pe baza normelor industriei pentru
a se asigura că codul bazat pe Framework .NET se poate integra în orice
care alt cod.

DRIOUCH B. [Link] 8

Componente .Net
CLR (Common Language Runtime): reprezintă maș ina virtuală
de la platformă (un pic ca JVM pentru java). Este responsabil pentru
executarea aplicaț iilor ș i gestionează toate aspectele de securitate: colectarea gunoiului
Colector, gestionarea evenimentelor etc.
Un ansamblu de biblioteci de clase: situat deasupra CLR, această
rubrica oferă un strat pentru gestionarea datelor. Aici găsim
Windows Forms (WinForms), un ansamblu de clase care permite
concepț ia IHM pentru Windows (puț in ca AWT sau Swing).
Adonet (Date ș i xml): o nouă generaț ie de componente de acces la
baze de date
Avem [Link] care oferă un set de clase pentru design.
de site dinamic, crearea de IHM pentru web, WebForms ș i
concepț ia serviciilor web.
În vârful stivei avem limbajele suportate de .NET, cum ar fi C#,
[Link], C++, J# care sunt produse Microsoft ș i altele precum
Cobol, Delphi, etc… ; .NET oferă astfel o alegere de limbaj, spre deosebire de
la concurentul său J2EE.
DRIOUCH B. [Link] nouă
Componente .Net

DRIOUCH B. [Link] 10

[Link]
Ce ne aduce ADO .NET?
O arhitectură mai optimizată: Cu .Net, noi
furnizorii de date văd lumina zilei. De exemplu, .NET
Frameworkul include furnizorul de date SQL Server
.NET în modul nativ prin namespace-ul [Link].
Un suport mai bun pentru modul offline: Astăzi
Microsoft încurajează modul deconectat ș i propune
clase specializate care suportă ambele moduri: conectat (prin
obiectul DataReader) ș i deconectat (prin intermediul obiectului DataSet).
Un suport mai bun pentru XML: XML-ul este folosit în cadrul
Framework .NET ca standard de descriere ș i
persistenț a datelor.

DRIOUCH B. [Link] 11

Alegerea unui furnizor de


date .NET
Pentru a putea apela la clasele oferite de ADO .Net, este
este necesar să includeț i o referinț ă la spaț iul de nume corespunzător. Dumneavoastră
poț i fie să incluzi spaț iul [Link], fie să incluzi clase din acesta
spaț iu ca [Link] sau [Link]; totul depinde
de la sursa de date utilizată.
Incluziunea unui spaț iu de nume
imports [Link]
Imports [Link]

DRIOUCH B. [Link] 12
Modelul de obiect ADO .NET

DRIOUCH B. [Link] 13

Modelul obiect ADO .NET


Să ne uităm mai atent la fiecare dintre aceste obiecte.

DRIOUCH B. [Link] 14

Conectare la o bază de date


Moduri de conexiune
Evolu ț ia [Link] este mai importantă din punct de vedere al modului
deconectat pentru a uș ura, pe de o parte, serverul BD ș i, pe de altă parte
pentru a economisi lăț imea de bandă, modul "deconectat" permite
clientul să efectueze funcț ii precum sortarea, filtrarea, fără
a apela la server, graț ie unei copii locale a datelor.
Avantajul modului "deconectat" faț ă de modul "conectat" este
evident, acesta din urmă folosind o conexiune permanentă cu
bază de date.

Ceea ce ne permite să avem două moduri de conectare (Modul


conectat ș i Modul deconectat

DRIOUCH B. [Link] 15
Crearea conexiunii
Pentru a muta datele între o bază de date ș i aplicaț ia dumneavoastră,
trebuie să aveț i o conexiune prealabilă la baza de date. Pentru
pentru a crea o conexiune la o bază de date, trebuie să identificaț i numele
server de baze de date, numele bazei de date ș i informaț iile
de conexiune necesare.
În func ț ie de tipul de bază de date la care accesa ț i, dumneavoastră
pute ț i folosi un obiect SqlConnection sau OleDbConnection. Folosi ț i un
obiect SqlConnection pentru conectarea la bazele de date SQL Server
versiunea 7.0 sau ulterioară ș i un obiect OleDbConnection pentru conexiune la
toate celelalte baze de date.
Pentru a crea un obiect SqlConnection, treceț i o ș ir de conexiune care
furnizează parametrii necesari pentru a crea o conexiune la o sursă de
date.

Dim strConn As String = ''data source=localhost ; initial catalog=GestStg ;


securitate integrată=true''
Dim conn As New SqlConnection(strConn)

DRIOUCH B. [Link] 16

Crearea conexiunii
Parametrii pentru conexiune

DRIOUCH B. [Link] 17

Acces la date în modul


conectat
Obiectul Comandă
Odată ce conexiunea către o bază de date a fost efectuată, voi
puteț i executa o interogare ș i recupera rezultatul acesteia folosind
obiectul Command. Crearea unui obiect Command necesită
instan ț ierea unui obiect SqlCommand. Acest obiect expune
metode diferite de utilizat în funcț ie de rezultatul aș teptat:

Metoda ExecuteReader poate fi utilizată pentru a recupera un


joc de înregistrări ș i returnează un obiectDataReader.
Metoda ExecuteScalarrecupera o valoare unitară.
Metoda ExecuteNonQuery execută o comandă nu
returând fără linii.

DRIOUCH B. [Link] 18
Exemple (Command)
Imports System
Imports [Link]
Clasa Publică CommandeSQL
Sub Public Shared Main()
Dim strConnexion As String = "Data Source=localhost; Integrated"
Securitate=SSPI; Catalog iniț ial=GestStg
Dim strRequete As String = "INSERARE ÎN Modul VALORI"
(‘[Link]',3)
Încercaț i
Dim oConnection As New SqlConnection(strConnexion)
Dim oCommand As New SqlCommand(strRequete, oConnection)
[Link]()
oComandă.ExecuteNonQuery()
[Link]()
Prinde e Excepț ie
[Link](("Următoarea eroare a fost întâlnită :" + [Link]))
Sfârș it Încercare
[Link]()
Sfârș it Sub 'Principal
Sfârș it clasă 'CommandeSQL
DRIOUCH B. [Link] 19

Mod conectat
obiectul DataReader
Obiectul DataReader permite recuperarea dintr-o sursă de date
un flux doar pentru citire, doar în faț ă
rezultă din executarea metodei ExecuteReader
pe un obiect Command.
Obiectul DataReader stochează în memorie doar un singur rând la o dată.
permite, astfel, cre ș terea performan ț elor unei
aplicaț ie ș i de a reduce încărcătura acesteia.
Se recomandă utilizarea acestui obiect dacă :
• Nu trebuie să realizaț i un cache al datelor
• Tratati un joc de înregistrări prea mare pentru a fi stocat în
memorie
• Doriț i să accesaț i rapid datele în modul numai citire în
înainte doar

DRIOUCH B. [Link] 20

Mod conectat
Implicit, un DataReader încarcă o linie întreagă în
memorie la fiecare apel al metodei Read. Este posibil
de a accesa valorile coloanelor fie prin numele lor, fie prin
referinț ele lor ordinare. O soluț ie mai performantă este
propusă care permite accesul la valori în tipurile lor de
date native (GetInt32, GetDouble, GetString) De exemplu
ș i prima coloană a liniei indicate de 0 este de tip int,
deci este posibil să o recupera ț i cu ajutorul metodei
GetInt32 de la obiectul DataReader.
Metoda Close închide un obiect DataReader. Să precizăm că
ș i obiectul Command utilizat conț ine parametrii de ieș ire sau
valori de returnare, acestea nu vor putea fi recuperate decât la
consecinț ele închiderii DataReader-ului.
DRIOUCH B. [Link] 21
Exemple (DataReader)
Crearea conexiunii ș i a obiectului Command
Dim conn As New SqlConnection("sursă de date=localhost\SQLExpress ; "
securitate integrată=true ; catalog iniț ial=GestStg
Dim cmdStg As New SqlCommand("select * from Stagiaire", conn)
[Link]()
Crearea unui DataReader ș i afiș area datelor
Dim dr As SqlDataReader
dr = [Link]()
În timp ce [Link]()
[Link](dr("nom") & " - " & dr("moyenne"))
Ciclul
Închiderea DataReader-ului ș i a conexiunii
[Link]()
[Link]()
[Link]()

DRIOUCH B. [Link] 22

Gestionarea erorilor
În timpul utilizării conexiunilor cu obiectul DataReader, ar trebui să
folosi ț i întotdeauna o instruc ț iune Try…catch…Finally pentru a garanta
închiderea conexiunilor în caz de eș ec de orice fel. Altfel, conexiunea
poate rămâne deschisă pe termen nedefinit.
Codul următor al unui obiect DataReader interceptă erorile ș i închide
conexiune
Încearcă
[Link]()
Dr = [Link]()
utilizarea datelor returnate în dataReader
Prinde e Ca Excepț ie
Gestionarea erorii
În sfârș it
[Link]()
[Link]()
Sfârș it Încercare

DRIOUCH B. [Link] 23

Exercițiu
Realizaț i o aplicaț ie cu schema relaț ională următoare
Stagiaire (IdStg, nomp, moyenne)
Module (IdMod, Libelle, Coeff)
Note (IdStg, IdMod, Note)
Ș i la conceperea feronerie următoare (listăVizualizare, ComboBox)
Pagina de întâmpinare
Menu

Liste Stagiar Liste Module


Ș terge Ș terge

Liste Note/Module
Modifier Adăugaț i Modificator Adăugaț i
Ș terge

Adăugaț i Modificator

DRIOUCH B. [Link] 24
Mode Déconnecté
DataSet:
Obiectul DataSet reprezintă o copie locală a datelor provenind din
mai pu ț in o sursă de date. Obiectul DataSet poate utiliza un obiect
DataAdapter pentru a încărca date dintr-o sursă de date ș i
se poate deconecta apoi de aceasta din urmă. Utilizatorul poate apoi
utiliza ș i manipula datele. Atunci când datele trebuie să fie puse la
zi în sursa de date, un obiect DataAdapter este utilizat pentru a se
reconectează-te la sursa de date ș i actualizează-o.

DRIOUCH B. [Link] 25

Set de date
Colecț ia "DataTableCollection"
Această colecț ie poate conț ine de la zero la n obiecte de tip DataTable. Fiecare
obiectul DataTable reprezintă o tabelă a unei surse de date. Fiecare
DataTable este compus dintr-o colecț ie Colonne ș i o colecț ie Rânduri
care pot con ț ine respectiv zero à n objete DataRow ș i
ColoanăDeDate.
Colecț ia "DataRelationCollection"
Această colecț ie poate conț ine de la zero la n obiecte de tip DataRelation. Un
obiectul DataRelation define ș te o rela ț ie părinte-copil între două tabele la
partind valori din cheile externe.
La collection "ExtendedProperties"
Această colecț ie corespunde unui obiect de tip PropertyCollection care poate
conț ine de zero până la n proprietăț i definite de utilizator. Această colecț ie
poate fi utilizată pentru a stoca informa ț ii personalizate legate de
DataSet utilizat (data ș i ora generării datelor, ordinea selectată trecută
pentru a genera datele.).

DRIOUCH B. [Link] 26

DataAdapter
Un obiect DataSet trebuie să fie capabil să interacț ioneze cu o sau mai multe surse de
données. Pour réaliser cette action le framework Microsoft .Net fournit un objet
numit DataAdapter. Obiectul DataAdapter serve ș te ca legătură între un obiect
DataSet este o sursă de date. Un furnizor de date .NET va fi
servi ț i un obiect DataAdapter pentru a umple un DataSet cu date, apoi
a repercuta modificările realizate asupra unei surse de date. Este
posibil de a defini acț iunile care trebuie realizate de DataAdapter folosind una
des patru proprietăț i următoare. Fiecare proprietate va executa fie o comandă SQL
deci este o procedură stocată.

DRIOUCH B. [Link] 27
DataTable (AutoIncrement)
Dim MaTable ca un nou DataTable
Adăugare coloană
Dim MaColonne As New DataColumn("id", "[Link]")
Cu MaColonne
.Unique = True
.AutoIncrement = Adevărat
.AllowDBNull = Falsă
.ReadOnly = True
Sfârș it Cu
[Link](MaColonne)
MaColonne = New DataColumn("nom", "[Link]")
[Link](MaColonne)
Adăugare linie
Dim MaLigne Ca DataRow
MaLigne = [Link]
MaLigne("nom") = " Ali"
[Link](MaLigne)

DRIOUCH B. [Link] 28

DataRelation
Definiț ia unei chei primare:
[Link]("Stagiaire").CheiaPrimară=
New DataColumn(){[Link]("Stagiaire").Columns("IndexNom")}

- Să presupunem că MonData este un set de date cu cele trei tabele ale bazei
GestSTG
Dim rel Ca DataRelation
rel = New DataRelation("stgNote", [Link]("Stagiaire").Columns("idstg"),
[Link]("Note").Columns("idstg")
[Link]ă(rel)
rel = New DataRelation("modNote", [Link]("Module").Columns("idmod"),
[Link]("Note").Coloane("idmod")
[Link](rel)

- Utilizarea unei relaț ii :


Dim LignesEnfants(), LinieVizată As DataRow
Dim rel As DataRelation = [Link]("stagiaire").ChildRelations("StgNote")
LigneVisée = [Link]("stagiaire").Rows([Link])
LignesEnfants = LigneVisé[Link](rel)

DRIOUCH B. [Link] 29

Umplerea unui DataSet


Metoda Fill a obiectului DataAdapter permite extragerea datelor dintr-o
sursa de date executând interogarea SQL specificată în proprietate
SelectCommand. Ea ia ca parametru DataSet-ul ș i numele DataTable-ului
a se completa cu datele returnate.
Crearea unui obiect SqlDataAdapter
Dim oSqlDataAdapter As New SqlDataAdapter("select * from Stagiaire", oConnection)
Dim oDataSet As New DataSet(“Stagiaire”)
[Link](oDataSet, "Stagiaire")
Actualizarea datelor cu un DataAdapter ș i un DataSet :
Metoda Update a obiectului DataAdapter permite propagarea asupra unei
sursa de date modificările efectuate într-un DataSet. Aceasta
metoda admit un obiect DataSet care conț ine datele modificate ș i un
obiect DataTable opț ional care conț ine modificările de extras.
[Link](oDataSet)
În realitate, atunci când metoda Update este invocată, obiectul DataAdapter
analizează modificările efectuate la nivelul colecț iei DataRow. În
func ț ia modificărilor întâmpinate, comenzile InsertCommand,
UpdateCommand ș i DeleteCommand sunt apelate de obiectul DataAdapter.
DRIOUCH B. [Link] 30
Crearea unui DataSet
Pentru a crea o copie locală a unei baze de date, creaț i ș i umpleț i un
objetDataSetau moyen d’[Link] créer un objet DataSet,
trebuie mai întâi să declaraț i numele obiectului DataSet. Codul următor creează
un obiect DataSet numit ds : Dim ds As New DataSet()

Umplerea setului de date


Après avoir crée un objet DataSet, remplissez les objets DataTable en créant
un obiect DataAdapter. Pute ț i apela metoda Fill a obiectului
DataAdapter, apoi preciza ț i obiectul DataTable à completa ț i. Codul următor
remplie tabelul Autori (Auteurs) al obiectului DataSet intitulat dsen utilizând un
DataAdapter numit: [Link](ds, ''Stagiaire'')

Acces la un DataTable
Fiecare obiect DataSet este compus din cel puț in un obiect DataTable pe care îl
puteț i face referire prin nume sau prin poziț ie ordinală :
[Link]('Autori')
Ou
[Link](0)
DRIOUCH B. [Link] 31

ConstructorDeComenzi
După completarea unui DataSet cu DataAdapter folosind obiectul SelectCommand, se poate
utilizaț i datele pentru tratamentele de actualizare (Adăugaț i, Modificaț i ș i Ș tergeț i), ș i la sfârș it
tratamente diferite trebuie să apelăm o a doua oară DataAdapter pentru a reflecta
modificarea Dataset-ului pe baza de date sursă, care face apel la celelalte trei obiecte
(InsertCommand, UpdateCommand ș i DeleteCommand) în func ț ie de starea (linie Adăuga ț i, Modifica ț i sau)
supprimer) de fiecare linie a DataTable-ului folosit
Pentru a efectua această operaț iune, trebuie să construim cele trei obiecte (InsertCommand, UpdateCommand ș i
DeleteCommand), la difficulté de leur construction nous fait appel a un autre objet CommandBuilder
care permite construcț ia lor pe baza SelectCommand

Utilizarea CommandBuilder
Dim StgCon As New SqlConnection("Data source=.\\SQLExpress; integrated security=true;initial "
catalog=GestStg")
Dim StgDA As New SqlDataAdapter("", StgCon)
Dim StgDS Ca Nou DataSet
Dim StgCB As SqlCommandBuilder
[Link] = New SqlCommand("Select idstg,nom,moyenne from stagiaire", StgCon)
[Link](StgDS, "stg")
Modificarea datelor în DataSet
StgCB = Nou SqlCommandBuilder(StgDA)
[Link]([Link]("stg"))

DRIOUCH B. [Link] 32

DataRowetDataColumn
Utilizaț i un obiect DataRow ș i proprietăț ile ș i metodele sale pentru a extrage ș i
evaluarea valorilor unui obiect DataTable. Colecț ia DataRow reprezintă
obiecte DataRow reale prezente în obiectul DataColumn care descriu
schema obiectului DataTable. Proprietatea Rows a obiectului DataTable oferă
o accesare programatică a DataRowCollection. Proprietatea Columns de
obiectul Tabel de date furnizat un acces par programare au
Colecț ia de coloane de date.
Dim col As DataColumn
Pentru fiecare col în [Link](0).Columns
[Link]([Link])
Următorul
numărul de linii sau coloane al unui obiect DataTable:
[Link]('Authors').[Link]
[Link]('Autori').[Link]
accesa aceste câmpuri prin poziț ie ordinală (de bază 0) sau prin nume :
[Link](0).Rânduri(x)(1)
[Link](0).Rows(x)(‘’nom_champ’’)
DRIOUCH B. [Link] 33
Încercaț i
Gestion Eroare
Dim conn As New SqlConnection(…)
Dim da As New SqlDataAdapter(…, conn)
Dim ds Ca Un Nou DataSet()
[Link](ds)
Prinde ex1 ca [Link]
Selectaț i cazul [Link]ăr
Cazul 17
[Link] = [Link] & (‘’nom de serveur non valide’’)
Caz 156, 170 'sintaxă SQL incorectă
[Link] = [Link] & ('sintaxă incorectă')
Cazul 207 'nume de câmp incorect în select
[Link] = [Link] & (‘’nom de colonne non valide’’)
Caz 208 'nume de tabel incorect în select
[Link] = [Link] & (‘’nom d’objet non valide’’)
Caz 18452
[Link] = [Link] & (‘’nom de l’utilisateur non valide’’)
Cazul 18456
[Link] = [Link] & (‘mot de passe non valide’’)
Cazul 4060
[Link] = [Link] & (‘‘bază de date invalidă’’)
Sfârș it Select
Prinde ex2 ca [Link]
[Link] = [Link] & (‘’Exception inattendue : ‘’ & [Link] & ‘’ , ‘’)
Sfârș it încercare

DRIOUCH B. [Link] 34

Gestion Eroare
Exemplul următor arată cum să parcurgi colecț ia
Erori pentru a căuta detalii despre erorile SQLServer
survenues :

Dim erData As [Link] = [Link]


Dim i As Integer
pentru i = 0 până la [Link]-1
[Link] &= (’’Eroare ‘’ & i & ‘’ : ‘’ & _
erData(i).Număr & ‘’ , ‘’ & _
erData(i).Class & ‘’ , ‘’ & _
erData(i).Message & ‘’’’
Următorul i

DRIOUCH B. [Link] 35

Exercițiu
Care este rezultatul codului următor :
Dim r As DataRow
Dim str As String
Pentru fiecare r din [Link]('Stagiaire').Rows
Str &=r(1)
Str &=r(‘’nume’’)
Următorul

Dim dt ca DataTable=[Link]('Stagiaire')
[Link] = "idstg"
[Link] = "nom"
[Link] = dt
Reproducerea Seriei M22 N1 în modul deconectat.
DRIOUCH B. [Link] 36
Control utilizator (componentă)
În programare, termenul componentă este utilizat în general
pentru a desemna un obiect care este reutilizabil ș i care poate interacț iona cu
alte obiecte.
Un component trebuie să definească proprietă ț i în loc de câmpuri
publice, deoarece designerii vizuali, cum ar fi Visual Studio .NET,
afi ș ează proprietă ț i ș i nu câmpuri în fereastra de
proprietăț i.
Proprietăț ile sunt ca niș te câmpuri inteligente. O proprietate
de obicei, deț ine un membru de date privat însoț it de
func ț ii de accesare ș i este accesată din punct de vedere sintactic
ca un câmp al unei clase
Vedeț i Atelier UserControle (Ceas) pe partea de descărcare
du site [Link]

DRIOUCH B. [Link] 37

Atelier UserContrôle
1- etapa lansaț i [Link] ș i creaț i un proiect de tip "aplicaț ie Windows"
ș i îl salvează sub numele MonPrimulMeuControl. [Link] creează un formular care va
servi pentru a testa ceasul nostru
2- adăugaț i un control utilizator gol

Afectează-l pe numele [Link]


Întrebare: care este diferenț a dintre cele două clase Form1 ș i Horloge?
3- creaț i ceasul nostru.
Avem nevoie de minimum două controale, da, asta e un etichetă ș i un cronometru. Să le adăugăm.
aș adar. După aceea, modificăm proprietăț ile Timer-ului pentru a actualiza ora la fiecare
secunde, deci trebuie ales ca interval 1000ms (milisecundă) ș i activat la
adevărat.
este suficient? Nu, trebuie activat pentru ca evenimentul Tick să se declanşeze
fiecare interval (aici 1000).
Reamintesc că evenimentul tick se declanș ează la fiecare 1000 de secunde. Aș adar, adăugaț i o
metodă ș i asociaț i-o cu evenimentul tick (faceț i dublu clic pe controlul Timer)
Adăugaț i următorul cod: [Link]="este: " & [Link]

DRIOUCH B. [Link] 38

Atelier Controlul utilizatorului

4- testaț i controlul.

Pentru a testa controlul, trebuie să compila ț i proiectul, iar acesta va crea pe cutie
d'outils controlul Ceasului pe care îl pute ț i insera apoi în formular
Formular1
Afiș aț i formularul Form1 ș i verificaț i în paleta de controale, este?
vezi controlul tău

Adăugaț i-o în formularul dvs. ș i executaț i-o (opț ional).

DRIOUCH B. [Link] 39
Integrați tranzacțiile
Tranzacț iile sunt grupuri de operaț iuni combinate în unităț i de lucru
logici. Ele sunt folosite pentru a controla ș i a men ț ine coeren ț a ș i
integritatea fiecărei acț iuni a unei tranzacț ii, în ciuda eventualelor erori
întâlnite pe sistem.
Avec un SGBDR qui prend en charge la gestion des transactions vous pouvez
crea ț i tranzac ț ii explicite à ajutor cu instruc ț iuni SQL ÎNCEPE
TRANSACTIE, COMITE TRANSACTIE sau ANULEAZA TRANSACTIE
Pentru a efectua o tranzacț ie :
1. Apelaț i metoda BeginTransaction a obiectului SqlConnection pentru a marca
începutul tranzac ț iei. Metoda BeginTransaction returnează o
referinţă la tranzacţie.
2.
Asignaț i obiectul Transaction la proprietatea Transaction a SqlCommand-ului
executa. Dacă o comandă este executată pe o conexiune pe care o
tranzac ț ia este activă ș i dacă obiectul tranzac ț iei nu a fost afectat la
proprietateaTransactiona obiectuluiComand, o excepț ie este ridicată.
3. Executaț i comenzile necesare.
4. Apela ț i metoda Commit a obiectului SqlTransaction pentru a finaliza
tranzacț ie, sau metoda Rollback pentru a o anula. Dacă conexiunea este închisă
ai fost eliberat înainte ca una dintre metodele Commit sau Rollback să fi fost
executată, tranzacț ia este anulată.
DRIOUCH B. [Link] 40

Integrați tranzacțiile (Exp)


Dim conexiune As SqlConnection = New SqlConnection(connectString)
[Link]()
Începerea unei tranzacț ii locale.
Dim sqlTran As SqlTransaction = [Link]()
legătura dintre comandă ș i tranzacț ia curentă.
Dim command As SqlCommand = [Link]()
[Link] = sqlTran
Încearcă
[Link] = "INSERT INTO Stagiaire(Nom) VALUES('Ali')"
[Link]()
[Link] = "INSERT INTO Stagiaire(Nom) VALUES('Ahmed')"
[Link]()
[Link]()
Cele două înregistrări sunt înscrise în baza de date
Prinde ex Ca Excepț ie
[Link]([Link])
Nu există nicio înregistrare înscrisă.
[Link]ă()
Sfârș it Încercare

NB: Pentru o utilizare avansată a tranzacț iilor, caută utilizarea


transaction distribuită cu API-ul în spaț iul de nume [Link]

DRIOUCH B. [Link] 41

Executarea procedurii stocate


Deoarece utilizarea procedurilor stocate cu SGBDR este profitabilă cu centralizarea tuturor
cod SQL la nivelul SGBD-ului, nu trebuie neglijată utilizarea acestora într-o aplicaț ie client-server
([Link]), acelea ș i obiecte pentru a executa o instruc ț iune SQL sunt reîntrebă pentru executarea unei
procedură stocată, pe lângă un obiect Parametru pentru a defini în mod explicit parametrii unei PS
Exp:soit AffNote o procedură care afiș ează lista notelor unui stagiar dat ca parametru
Dim conn As New SqlConnection("data source=.\\SQLExpress;initial catalog=GestStg; integrated security=true")
Dim cmd As New SqlCommand("AffNote", conn)
[Link] = [Link]
Crearea unui parametru de intrare
Dim oParam As SqlParameter = [Link]("@idstg", [Link], 32, "idstg")
[Link] = "1"
[Link]()
Dim dr As SqlDataReader = [Link]
În timp ce [Link]
[Link]("{0} : " & [Link] & "{1}", dr("libelle"), dr("note"))
Sfârș it While
[Link]()
[Link]()
Apasă o tastă ....
[Link]()

DRIOUCH B. [Link] 42
scheme-urile XSD (DataSet tipizat)
DataSet este de fapt un fi ș ier XML care define ș te diferitele tabele care
componentele surselor de date pentru munca dumneavoastră (ComboBox, DataGrid,
CrystalReport…). Ce care evită orice problemă legată de schimbarea conexiunii
la baza de date.

Pentru asta, adaugă un nou element.


în proiectul de tip DataSet (ext
xsd), după aceea adaugă tabele printr-o
conexiune în explorerul de server,
sau, adaugă unul nou
DataAdapter cu o interogare SQL
specific ș i un ș ir de conexiune,
un DataTable se adaugă automat,
cu un asistent care permite să creezi
celelelalte obiecte ale DataAdapter-ului
(InsertCommand, Ș tergeComandă
UpdateCommande)

DRIOUCH B. [Link] 43

State (CrystalReports)
În orice aplicaț ie este nevoie de raport de ieș ire imprimabil, fie rapoarte
de listare, de calcule sau de grafic.
Pentru asta, adaugă un nou element de tip CrystalReport (ext rpt), în
exploratorul câmpurilor poate configura toate câmpurile de bază de date, câmpurile
de formule, câmpuri de parametru, câmpuri de nume de grup, câmpuri de total cumulat
ș i altele.
Exemple: pentru a avea un raport cu toț i stagiarii, împreună cu notele ș i materiile lor,
începe prin a parametriza câmpul bazei de date cu DataSet tipizat, ca parametru
câmpul numelui grupului pentru a specifica gruparea după id_stg ș i a le trasa
elemente de care avem nevoie pe CrystalReport, pentru a afiș a acest raport, trebuie să folosim un
CrystalReportViewer într-o formulară ș i a adăugat următorul cod la pornirea
Forms:
Imports [Link]
Dim DS As New DSet ‘ instanț ierea dataset-ului
Dim DAstg As New stagiaireTableAdapter
Dim DAmat As New matiereTableAdapter
Dim DAnot As New noteTableAdapter
Dim etatn Ca Un Nou EtatNote
[Link]([Link]) ‘ completarea Datatables în DataSet
[Link]([Link])
DAnot umple ([Link])
[Link](DS) ' legătura între CR ș i DataSet
[Link] = etatn ‘ lien entre CRViewer et CR

DRIOUCH B. [Link] 44

State (CrystalReports)
Pentru a afi ș a un singur extras pentru un
singura stagiară, trebuie să lucrezi pe
câmpuri de parametru pentru a crea un
parametru. Dă-i un nume ș i un
tip
Click dreapta într-un loc gol
în raport pentru a afi ș a Expertul
Selec ț ie, după alegerea elementului
face ț i clic pe OK pentru a preciza egalitatea
între elementul selectat ș i
parametru creare

DRIOUCH B. [Link] 45
State (CrystalReports)
Ș i pentru program, trebuie să facem următoarele schimbări pentru
a lua în considerare parametru:

Importuri [Link]
Dim DSet1 Ca Nou DSet
Dim MatiereTableAdapter1 Ca Nou matiereTableAdapter
Dim StagiaireTableAdapter1 Ca Noua stagiaireTableAdapter
Dim NoteTableAdapter1 ca un nou noteTableAdapter
Dim releve Ca Nou ReleveSTG
Pornirea ferestrei cu CrystalReportViewer
[Link]([Link])
[Link]([Link])
[Link]([Link])
[Link](DSet1)
[Link]("idstg", idstg) ‘idstg: valoarea parametrului
[Link] = releve

DRIOUCH B. [Link] 46

State (CrystalReports)
În cele din urmă putem
însoț it raportul nostru
printr-un diagramă
Histogramă
Click dreapta -> Inserare...
Nota pe Modul
în relevé Stagiaire.

DRIOUCH B. [Link] 47

Dezvoltare (Instalare)
Există mai multe metode de publicare.
normal, cu proiect de desfă ș urare, alte unelte
externes…
Pe pagina de proprietate a proiectului dumneavoastră există o parte
Publica ț i că trebuie configurat înainte de lansarea dvs.
publicaț ie

• Loca ț ia dosarului de publicare: dosar de ie ș ire


• Fi ș iere de aplica ț ie: adăuga ț i fi ș ierele de resursă ale dvs.
aplicaț ie (bază de date, imagine, pictogramă, fiș ier text, …)
• Componente necesare: component utilizat în aplica ț ia dumneavoastră
(răspundeț i la uneltele utilizate precum CrystalReport, SQLExpress, …)
instalabil din aplicaț ia dumneavoastră
• Actualizare: aplica ț ia caută actualizarea sau nu (dacă da, indicat)
linkul Web
• Op ț iuni : alte informa ț ii

DRIOUCH B. [Link] 48
DRIOUCH B. [Link] 49

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