Vous êtes sur la page 1sur 9

CFMOTI/NTIC1/2TDI

Les transactions

1 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

2 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

3 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

4 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

5 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

Les transactions en ADO.NET : les transactions locales


1 Introduction
1.1 Prsentation Une transaction est un ensemble doprations ralises sur une base de donnes, excute de manire unitaire. En tant quunit, ces oprations sont valides uniquement si toutes ont t excutes avec succs (en application du principe tout ou rien ). Il existe quatre proprits connues sous le nom ACID qui dfinissent une transaction : - Atomicit reprsente lintgralit des oprations effectues par une transaction : soit elles sont valides dans leur ensemble (commit), soit la transaction est annule (rollback). - Cohrence reprsente lintgrit de la base de donne, que la transaction est tait valid ou annul, la base de donne doit rester intgre. - Isolation, une transaction est indpendante dune autre transaction. Les transactions ne peuvent interfrer entre elles. - Durabilit, les donnes sont prserves une fois la transaction acheve. Il existe deux types de transactions en ADO.net, les transactions locales et les transactions distribues. Les transactions locales sont des transactions simples qui effectuent des oprations sur une seule ressource (par exemple une base de donnes). Les transactions distribues quand elles, sont des transactions qui utilisent de nombreuses ressources. 1.2 Principes dexcution dune transaction Le schma ci-dessous vous expose le principe dexcution dune transaction :

6 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

1.3 Prsentation de la base de donnes Dans les cas pratiques prsents dans ce cours, nous allons utiliser une base de donnes SQL Server 2008 nomme DotnetFranceA pour aborder les transactions locales

1.3.1 Cration de la base de donnes DotnetFranceA La base de donnes DotnetFranceA ne contient quune seule table, nomme Stagiaire. Voici un script SQL, permettant de crer cette table :

Et voici un autre script permettant dalimenter cette table :

2 Les transactions locales


2.1 Cration dune transaction locale 2.1.1 Prsentation Pour crer une transaction en ADO.net, on utilise une classe drivant de la classe DbTransaction. Cette classe appartient lespace de nom System.Data.Common du
7 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

composant System.data.dll du Framework .NET. Cette classe expose les mthodes BeginTransaction, Commit et Rollback, essentielles dans la mise en uvre des transactions. En fonction des classes daccs aux donnes utilises, vous utiliserez la classe suivante : - System.Data.Odbc.OdbcTransaction - System.Data.OleDb.OleDbTransaction - System.Data.OracleClient.OracleTransaction - System.Data.SqlClient.SqlTransaction

La mthode BeginTransaction permet de dbuter la transaction. La mthode Commit permet de valider les modifications effectues par les requtes excutes au sein de la transaction. La mthode Rollback permet dannuler ces modifications. 2.1.2 Mise en uvre Dans lexemple ci-dessous, nous utilisons une transaction, au sein de la quelle sont excutes deux requtes Insert sur une base de donnes SQL Server 2008. Nous utiliserons donc la classe SqlTransaction. Si les deux requtes sexcutant au sein de cette transaction sont excutes avec succs : - Nous appliquons sur lobjet Transaction la mthode Commit, pour valider la transaction. - Dans une bote de message, nous afficherons le message Transaction valide . Dans le cas o lexcution dune des deux requtes choue : - Nous appliquons sur lobjet Transaction la mthode Rollback, pour annuler la transaction. - Dans une bote de message, nous affichons le message derreur. Dans notre cas, nous ajoutons un premier Stagiaire. Cet ajout sexcute normalement. Le second provoque la leve dune exception, car lajout dun stagiaire avec un identifiant existant provoque une violation dune contrainte de cl primaire. Ainsi, la transaction est annule, et aucun ajout nest effectu en base de donnes.

8 FORMATRICE : SABRI AZIZA

CFMOTI/NTIC1/2TDI

9 FORMATRICE : SABRI AZIZA