Académique Documents
Professionnel Documents
Culture Documents
Objectifs et plan
n Objectifs n Rappel sur les bases de donnes relationnelles n Prsentation des classes de ADO.NET n Utilisation de ADO.NET dans une application n Plan n Base de donnes n Base de donnes relationnelles n Survol dADO.NET n Prsentation des classes dADO.NET
03/03/2003 2
03/03/2003
Base de donnes
n Toutes applications ncessitent des outils
E-Commerce: sauvegarder un ordre, remplir un ordre Assistant personnel : donnes personnelles (contact, agenda, )
applications
n n
03/03/2003
Base de donnes
Besoins
n Conservation, lecture et modification des donnes n Copier, transformer des donnes n Sauvegarder et restaurer des donnes n Exprimer, vrifier des rgles dintgrit n Facteur dchelle et disponibilit n Evolution du nombre dutilisateurs n Volume important des donnes n Dbit important et temps de rponse court n tre sr n Facilit le dveloppement des applications
03/03/2003
03/03/2003
Base de donnes
Evolution des technologies
n Fichier n Bases de donnes hirarchiques n Accs distance n Bases de donnes relationelles (RDBMS) n Bases de donnes orients objets n XML
03/03/2003
Plan
n Base de donnes n Base de donnes relationnelles n Survol dADO.NET n Prsentation des classes dADO.NET
03/03/2003
03/03/2003
Cls primaires
n n n
Guarantissent lunicit dune ligne Peut tre compose dune ou plusieurs colonnes Permet de garantir lintgrit des entits Permettent dtablir des relations logiques entre des tables Une ou plusieurs colonnes dune table correspond une cl primaire (ou externe) dune autre table Permettent de garantir lintgrit de la base
8
Cls externes
n
03/03/2003
03/03/2003
Schema Diagram
03/03/2003 9
Authors Table
03/03/2003 10
03/03/2003
bases (contenant des donnes rpliques) n Difficile dassurer lintgrit de la base n Le remde : crer une troisime table
n n
La troisime table contient les cls primaires des deux tables dorigine (construction dune cl composite) Les donnes sont rpts dans cette troisime table, mais pas dans les deux tables originales
Authors
03/03/2003
BookAuth
Books
12
03/03/2003
03/03/2003
13
Processus qui permet de casser une grande table en plusieurs petites n But : minimiser les donnes redondantes, augmenter la correction n Amliore les performances lors des mises jours n Souhaitable pour des applications transactionnelles n Dnormalisation n Processus qui combine de petite table pour en construire une grande
n n n n n
03/03/2003
But : amliorer les performances Introduit des donnes redondantes Amliore les performances lors des lectures Souhaitable pour les entrepts de donnes
14
03/03/2003
plusieurs tables
n Repose gnralement sur les relations cls publiques/cls
externes Product table Product Widget Thingy Widget Foobar Cost $10 $5 $8 $25 Vendor Acme Acme Blecco Blecco
$10 $5 $8 $25
Widget Foobar
Les fonctions usuelles sont les mmes dans les diffrents produits La plupart des vendeurs ont des extensions propritaires
n Sous-ensemble de SQL n Data Definition Language (DDL) n Data Manipulation Language (DML) n Data Control Language (DCL)
03/03/2003 16
03/03/2003
CREATE DATABASE Bookstore CREATE TABLE tBooks ( BookID INT IDENTITY(1,1) PRIMARY KEY, Title VARCHAR(30) NOT NULL, PubDate DATE NOT NULL, [Description] VARCHAR(50), Category INT NOT NULL )
03/03/2003 17
03/03/2003
03/03/2003
19
03/03/2003
20
10
03/03/2003
03/03/2003
21
CREATE VIEW vwCustomerOrders AS SELECT o.OrderId, c.CompanyName FROM Customers c INNER JOIN Orders o ON c.CustomerID = O.CustomerID ORDER BY o.OrderId
03/03/2003 22
11
03/03/2003
SELECT * FROM vwCustomerOrders WHERE CompanyName = 'My Favorite Customer' OrderId 101 137 CompanyName My Favorite Customer My Favorite Customer
03/03/2003
23
n n n n
Un ensemble dinstructions SQL qui sexcute cot de la base de donnes n Ne fait pas parti du standard SQL Offre une meilleure performance Permet de contrler laccs aux donnes Peut accepter des paramtres Peut retourner des donnes n Paramtres de sorties n Valeur de retour n Ensemble de retour
CREATE PROCEDURE CustOrderHist @CustomerID nchar(5) AS SELECT ProductName, Total=SUM(Quantity) FROM Products P, [Order Details] OD, Orders O, Customers C WHERE C.CustomerID = @CustomerID AND C.CustomerID = O.CustomerID AND O.OrderID = OD.OrderID AND OD.ProductID = P.ProductID GROUP BY ProductName
03/03/2003
...
24
12
03/03/2003
rsultats
CREATE PROCEDURE MyProcedure @ReturnValue INT OUTPUT ... SELECT @ReturnValue = ColumnName FROM Table
03/03/2003
25
n n n
du code qui sexcute hors de la base de donnes Ne peuvent pas tre appeles directement par les utilisateurs Excute des moments spcifiques de la vie dune donne particulire (INSERT, UPDATE or DELETE) Permet de vrifier des rgles dintgrits FOR AFTER : trigger excut aprs les actions trigues FOR INSTEAD OF : trigger excut la place des actions trigues
26
03/03/2003
13
03/03/2003
Atomicit : toute la squence est excute avec succs, ou en cas derreur on revient ltat initial Consistance : laisse les donnes dans un tat consistant (respect des rgles dintgrits) Isolation : ne peut pas voir les modifications effectues par des transactions concurrentes Durabilit : mme en cas de panne, les effets de la transaction ne peuvent pas tre effacs un fois quelle a valid
27
03/03/2003
14
03/03/2003
Plan
n Base de donnes n Base de donnes relationnelles n Survol dADO.NET n Prsentation des classes dADO.NET
03/03/2003
29
Survol dADO.NET
Rappel
n ODBC (Open Database Connectivity) n Interoprabilit avec de nombreuses bases de donnes (DBMS) n API largement accepte n utilise SQL comme langage daccs aux donnes n DAO (Data Access Objects) n Interface de programmation pour les bases de donnes JET/ISAM n Utilise automation (ActiveX, OLE automation) n RDO (Remote Data Objects) n Fortement coupl avec ODBC n Adapt au modle client-serveur (vs. DAO) n OLE DB n Accs aux donnes relationnelles ou non n Construit pour COM n Pas restreint au langage SQL n Peut utiliser des drivers ODBC n Interface de bas niveau (C++) n ADO (ActiveX Data Objects) n Interface oriente objet, Ensemble de composants daccs n Dfini un modle de programmation pour OLE DB accessible pour tous les 03/03/2003langages 30
15
03/03/2003
Survol dADO.NET
Chane daccs ADO
Votre application ADO OLE DB
ODBC
ODBC Driver
OLE DB Provider
Database
ODBC Provider
03/03/2003
Database
Native Provider
31
Survol dADO.NET
ADO
n ADO a t dfini comme un modle fortement
n Dfini pour le modle relationnel n Par pour le modle hirarchique (XML) n La conception objet dADO laisse dsirer n Plusieurs manire de faire la mme chose n Une mme objet a plusieurs utilisations n Pas dfini pour les applications rparties (n-
tier architecture)
03/03/2003 32
16
03/03/2003
Survol dADO.NET
ADO.NET
n ADO .NET est une collection de classes,
interfaces, structures et de types numrs pour accder des donnes relationnelles dans le framework .NET
n
n ADO .NET est une volution dADO. n Ne partage pas le mme modle objet n Mais partage plusieurs paradigmes ou 03/03/2003 fonctionnalits
33
Survol dADO.NET
Objectifs dADO.NET
n Excellente conception n Gestion robuste du modle dconnect n Supporter aussi bien le modle hirarchique
dHTTP n Maintenir la familiarit avec le modle de programmation dADO n Rendre ADO disponible via .NET
n
03/03/2003
17
03/03/2003
Survol dADO.NET
Providers supports
n Fusionner ADO et OLEDB en un seul niveau n Chaque provider contient un ensemble de classe qui
ADO Managed Provider : permet laccs ay base de donnes de type OLE SQL Server Managed Provider : fournit des performance optimale pour lutilisation dun serveur SQL Exchange Managed Provider : permet la recherche et la modification de donne dans Microsoft Exchange
03/03/2003
35
Survol dADO.NET
Providers supports
Votre application ADO.NET Managed Provider
18
03/03/2003
Survol dADO.NET
Accs aux donnes
n Connect : Forward-only, read-only n Les applications requtent les donnes, les rapatrient et les utilisent n Firehose cursor n DataReader n Dconnect n Les applications requtent les donnes, les sauvegardent pour pouvoir les traiter n Minimise le temps de connexion avec la base n DataSet
03/03/2003 37
Survol dADO.NET
Liaison aux donnes (data binding)
n Composant cl du framework Web Forms n Flexible et facile utiliser n Permet de lier nimporte quel type de donnes stock dans une base n Permet de contrler les transferts de donnes entre la base et lapplication n Contrle simple pour laccs une valeur simple n Contrle complexe pour laccs une donne structure
<asp:Label runat=server Text='<%# CustList(0).FirstName %>'/>
03/03/2003
38
19
03/03/2003
Plan
n Base de donnes n Base de donnes relationnelles n Survol dADO.NET n Prsentation des classes dADO.NET
03/03/2003
39
ADO.NET
Interface IDbConnection
n Crer une session unique avec un source de
Ouvrir, fermer les connections Dmarrer les transactions n IDbTransaction fournit les mthodes Commit et Rollback
IDataAdapter n Dautres proprits, mthodes et collections peuvent tre offerts selon le provider
03/03/2003 40
20
03/03/2003
ADO.NET
Interface IDbCommand
n Reprsente une instruction qui peut tre envoye une source de
n n
n n
donnes n Peut tre du SQL mais pas ncessairement Implmenter par OleDbCommand et SqlCommand Fonctionnalits n Dfini une instruction excuter n Excute linstruction n Passe et rcupre les paramtres n Cre et prpare une version compile de la commande ExecuteReader retourne une ligne, ExecuteNonQuery ne retourne rien, ExecuteScalar retourne une valeur simple Dautres proprits, mthodes et collections peuvent tre offerts selon le provider
03/03/2003
41
ADO.NET
Interface IDataReader
n Accs en mode forward-only, read-only un
flux (stream) de donnes n Implment par SqlDataReader et OleDbDataReader n Cr par la mthode ExecuteReader de IDbCommand n Les oprations sur les objets associs la connexion (IDbConnection) ne sont pas autoris jusqu la fermeture de la lecture
03/03/2003 42
21
03/03/2003
ADO.NET
Namespace System.Data.OleDb
n utiliser avec des providers OLEDB
(namespace managed)
n n n n
SQLOLEDB (SQL Server) utilise System.Data.SQL MSDAORA (Oracle) JOLT (Jet) OLEDB for ODBC providers
n Classes OleDbConnection,
OleDbCommand et OleDbDataReader n Classes pour la gestion des erreurs n Classes pour la gestion des connexions
03/03/2003
43
ADO.NET
Un exemple : DataReader
string sConnString = Provider=SQLOLEDB.1; + User ID=sa;Initial Catalog=Northwind; + Data Source=MYSERVER; OleDbConnection conn = new OleDbConnection(sConnString); conn.Open(); string sQueryString = SELECT CompanyName FROM Customers; OleDbCommand myCommand = new OleDbCommand(sQueryString, conn); OleDbDataReader myReader = myCommand.ExecuteReader(); while (myReader.Read()) { Console.WriteLine(myReader.GetString(0)); } myReader.Close(); conn.Close();
03/03/2003
44
22
03/03/2003
ADO.NET
Dmonstration : DataReader, Insert
03/03/2003
45
ADO.NET
Namespace System.Data
n Contient les classes au coeur de larchitecture
ADO.NET n La classe DataSet, qui gre le mode dconnect est centrale n Supporte tous les types dapplications
n
Internet
n n
ASP.NET XML
Windows
23
03/03/2003
ADO.NET
DataSet
n n n n n n n n
Une collection de tables Na pas la connaissance de la source de donnes Capture toutes les relations entre les tables Modle de programmation complet (objets pour les tables, les colonnes, les relations, etc.) Mmorise ltat original et ltat courant des donnes Peu modifier dynamiquement les donnes et les mta-donnes Permet de srialiser les schmas en XML Dfini dans le namespace System.Data
03/03/2003
47
ADO.NET
DataSet
24
03/03/2003
ADO.NET
Namespace System.Data.SqlClient
n Dfini de manire native par le serveur SQL
(managed code) n Construit laide de TDS (Tabular Data Stream) pour de bonne performance dans le serveur SQL n Dfini les classes SqlConnection, SqlCommand and SqlDataReader n Dfini aussi des classes pour
n n
Gestion des erreurs La gestion des connections par pool (fonctionnement par dfaut)
ADO.NET
Interface IDataAdapter
n Publie ou envoie les modification un
n Contient quatre objets commandes par dfaut n Select, Insert, Update, et Delete
03/03/2003 50
25
03/03/2003
ADO.NET Classes
DataSet Example
string sConnString = Persist Security Info=False; + User ID=sa;Initial Catalog=Northwind; + Data Source=MYSERVER; SqlConnection conn = new SqlConnection(sConnString); conn.Open(); string sQueryString = SELECT CompanyName FROM Customers; SqlDataAdapter myDSAdapter = new SqlDataAdapter(); DataSet myDataSet = new DataSet(); myDSAdapter.SelectCommand = new SqlCommand(sQueryString, conn); myDSAdapter.Fill(myDataSet); conn.Close();
03/03/2003
51
ADO.NET Classes
Dmonstration DataSet
03/03/2003
52
26
03/03/2003
ADO.NET Classes
Dmonstration procdure stocke
03/03/2003
53
ADO.NET Classes
DataTable
n Objet mmoire reprsentant une table n Colonnes n lignes n Le schma est dfinit dans la collection
Columns n Lintgrit des donnes est assure par les objets Constraint n vnements publiques
n n
03/03/2003
27
03/03/2003
ADO.NET Classes
DataColumn
n lment fondamental de lobjet DataTable (contenu n n n n
dans la collection Columns) Dfinis quel type de donnes peuvent tre stockes dans la table (via la proprit DataType) Dautres importantes proprits peuvent tre inclues AllowNull, Unique, et ReadOnly Peut aussi contenir Constraints (collection de DataTable) Peut aussi contenir Relations (collection de DataSet)
03/03/2003
55
ADO.NET Classes
DataRow
n Reprsente une donne dans DataTable
(contenu dans la collection Rows) n Conforme au schma dfini par DataColumns n Proprits pour dterminer ltat de la ligne (e.g., new, changed, deleted, etc.) n Tous ajouts/modifications doivent valides (committed) par la mthode AcceptChanges de DataTable
03/03/2003
56
28
03/03/2003
ADO.NET Classes
DataRelation
n Met en relation deux DataTables via
DataColumns n Les valeurs des DataType des deux DataColumns doivent tre identiques n Les modifications peuvent tre propages au fils de DataTables n Les modifications qui invalident les relations sont interdites
03/03/2003
57
ADO.NET Classes
Crer un DataSet
n Crer un DataSet n Dfinir les tables
DataSet dataset = new DataSet(); dataset.DataSetName = BookAuthors; DataTable authors = new DataTable(Author); DataTable books = new DataTable(Book);
03/03/2003 58
29
03/03/2003
ADO.NET Classes
Crer un DataSet
n Definir les colonnes n Definir la ou les cls
DataColumn id = authors.Columns.Add("ID", typeof(Int32)); id.AutoIncrement = true; authors.PrimaryKey = new DataColumn[] {id}; DataColumn name = new authors.Columns.Add("Name",typeof(String)); DataColumn isbn = books.Columns.Add("ISBN", typeof(String)); books.PrimaryKey = new DataColumn[] {isbn}; DataColumn title = books.Columns.Add("Title", typeof(String)); DataColumn authid = books.Columns.Add(AuthID,typeof(Int32)); DataColumn[] foreignkey = new DataColumn[] {authid};
03/03/2003
59
ADO.NET Classes
Crer un DataSet
n Ajouter les tables au DataSet
03/03/2003
60
30
03/03/2003
ADO.NET Classes
Crer un DataSet
n Ajouter les donnes et sauvegarder le DataSet
DataRow shkspr = authors.NewRow(); shkspr["Name"] = "William Shakespeare"; authors.Rows.Add(shkspr); DataRelation bookauth = new DataRelation("BookAuthors", authors.PrimaryKey, foreignkey); dataset.Relations.Add (bookauth); DataRow row = books.NewRow(); row["AuthID"] = shkspr["ID"]; row["ISBN"] = "1000-XYZ"; row["Title"] = "MacBeth"; books.Rows.Add(row); dataset.AcceptChanges();
03/03/2003 61
ADO.NET Classes
Dmonstration crer un DataSet
03/03/2003
62
31
03/03/2003
ADO.NET Classes
DataSet typ
n DataSet typ n Driv de la classe de base DataSet n Utilise les schmas XML pour gnrer une nouvelle classe n Tables, colonnes, etc. sont compiles dans une nouvelle classe
ds.Customers.FirstName
ds.Tables[Customers].Rows[0][FirstName]
03/03/2003 63
ADO.NET
Erreurs et exceptions
n Classe Error
Contient les informations lies une erreur ou un warning retourn par une source de donnes n Cr et gr par la classe Errors n Classe Errors n Contient toutes les erreurs gnres par un adaptateur n Cr par la classe Exception n Classe Exception n Cr chaque fois quune erreur non traite survient n Contient au moins une instance de la classe Error
n
03/03/2003
try { DataTable myTable = new DataTable(); myTable.Columns.Add(myCol); myTable.Columns.Add(myCol); //whoops! } Catch (DataException myException ) { Console.WriteLine ( "Message: + myException.Message + "\n + "Source: + myException.Source + "\n + Stack Trace: + myException.StackTrace + "\n"); }
64
32
03/03/2003
ADO.NET Classes
Dmonstration DataException
03/03/2003
65
http://msdn.microsoft.com/msdnmag/issues/1100/adoplus/a doplus.asp http://msdn.microsoft.com/library/default.asp?URL=/libr ary/dotnet/cpguide/cpconaccessingdata.htm http://msdn.microsoft.com/library/techart/adoplus.htm http://msdn.microsoft.com/library/techart/adonetdev.htm http://msdn.microsoft.com/library/welcome/dsmsdn/data02 222001.htm http://msdn.microsoft.com/library/welcome/dsmsdn/data03 222001.htm
66
n ADO.NET
n
n ADO.NET for the ADO Programmer n ADO Rocks and Rolls in .NET Applications
n
03/03/2003
33
03/03/2003
n ADO
n
n SQL Server
n
03/03/2003
67
34