begin process at 2012 02 13 12:30:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > [EXEMPLE] TRANSACTION

[EXEMPLE] TRANSACTION


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Niveau :Débutant Date de création :02/08/2004 Vu / téléchargé :14 658 / 589

Auteur : jimmy69

Ecrire un message privé
Site perso
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Votre premiere transaction (Juillet 2004)
-------------------------------------------- --------

P'tit script  qui
ne fait que d'insérer des valeurs dans une table sql serveur et qui recupere
l'identifiant (clef) dernierement insére..grace a une procedure stockee qui renvoit donc un
parametre.

Ce n'est qu'un exemple que j'ai realise  pour vous montrer comment fonctionne
une transaction.

Pour ceux qui ne savent pas ce qu'est une procedure stockee, je les renvois vers ce lien ou vous
pourrez telecharger un p'tit tuto au format word.

http://www.delphifr.com/code.aspx?ID=22175

Pour cet exemple, je me suis basé sur le script de Fabrice qui se trouve à cette adresse
http://www.aspfr.com/code.aspx?ID=9038 => thanks


Ce script vous montrera comment réalise une transactions :

comment la demarrer                                  => begintransaction
la valider                                                     => commit()
restaurer la transaction en cas d'erreurs   => rollback()


Dans le .zip, vous trouverez un p'tit tuto d'une page au format word vous renseignant un peu
plus sur les transactions, qu'est ce qu'une transaction, exemple de transaction,
et sur la classe sqltransaction, ainsi qu'un lien vous
renvoyant vers le site de msdn ou tout est ecrit ....:-) y'a qu'a suivre !


Por faire tourner ce script :
------------------------------------

Il vous suffit d'ouvrir le fichier en .sql et de le coller
dans l'analyseur de requetes et de l'executer...
Cela créera la structure de la table ainsi que la procedure stockee

ensuite ouvrez le fichier global.asax
et changez les propriete de la connection, mettez le nom de
votre base de donnees

ICI =>
myConnection.Connectionstring = "server=(local);Initial Catalog=NomDeVotreBase;trusted_connection=yes"


V oila enregistrez le tout...

ca roule

Source

  • 'ENREGISTREMENT DES DONNEES DS LA BASE
  • Sub BtnValide_Click(sender As Object, e As EventArgs)
  • '---- SI LE TEXTBOXNOM EST VIDE ON AFFICHE UN P TIT MESSAGE ERREUR ---
  • IF (txtboxnom.text = "") then
  • labelerreur.text = "Veuillez completer le formulaire svp...!"
  • ' ----SINON ON ENvOIT TOUTES LES DONNEES A LA PROCEDURE STOCKEE ---
  • Else
  • ' --- RECUPERATION CONNECTION DS LE FICHIER GLOBAL.ASAX ---
  • myConnection = Ctype(Session("myConnection"),sqlConnection)
  • '--- DECLARATION -------
  • Dim myTrans As SqlTransaction
  • Dim redirectionUrl as string
  • Dim Parametre As SqlParameter
  • Dim Mycommand as new sqlcommand
  • '-------------------------------
  • ' GESTION DES ERREURS
  • '-------------------------------
  • '--- DEBUT DE LA TRANSACTOIN -------
  • myTrans = myConnection.BeginTransaction
  • Try
  • '--- PROCEDURE STOKCEE AJOUTUTILISATEUR -----
  • MyCommand = New SqlCommand("ajoututilisateur",MyConnection)
  • MyCommand.CommandType = commandType.StoredProcedure
  • '----------------------------------------------------------------
  • ' PARAMETRE PASSE A LA PROCEDURE STOCKEE => AJOUTUTILISATEUR
  • ' ON PLACE DONC LES VALEURS CONTENUES DS LES TEXTBOX
  • ' DS LES VARIABLES POUR LA PROCEDURE STOCKEE
  • '----------------------------------------------------------------
  • Mycommand.parameters.add("@insertnom", SqlDbType.nvarchar).value = Txtboxnom.text
  • Mycommand.parameters.add("@insertprenom", SqlDbType.nvarchar).value = TxtBoxprenom.text
  • Mycommand.parameters.add("@insertadresse", SqlDbType.nvarchar).value = TxtBoxad.text
  • Mycommand.parameters.add("@insertville", SqlDbType.nvarchar).value = TxtBoxvi.text
  • Mycommand.parameters.add("@inserttelephone", SqlDbType.nvarchar).value =TxtBoxtel.text
  • Mycommand.parameters.add("@inserdate", sqlDbType.datetime).value=calendar.selecteddate
  • '---- RECUPERATION DE LA CLEF INSERER ------
  • Parametre = MyCommand.Parameters.Add("@clefutilisateur", SqlDbType.Int)
  • Parametre.Direction = ParameterDirection.Output
  • ' --- EXECUTION DE LA COMMANDE AVEC RECUPERATION DU DERNIER INSERER
  • Mycommand.transaction = Mytrans
  • Mycommand.ExecuteReader()
  • '--- ON RECUPERE LA PK RECEMENT INSERER ET ON REDIRIGE LE TOUT -----
  • Dim dernier_insere = CInt(MyCommand.Parameters("@clefutilisateur").Value.ToString())
  • '---- REDIREXCTION -----
  • RedirectionURL = "details_insertion.aspx?id="+dernier_insere.ToString()
  • '--- COMMIT = Valide la transaction de base de données -----
  • myTrans.Commit()
  • '---- REDIRECTION -------
  • Response.Redirect(RedirectionURL)
  • Catch
  • ' ---ici on place le code à exécuter si l’erreur se produit
  • ' --- Rollback = Restaure une transaction à partir d'un état d'attente
  • myTrans.Rollback()
  • labelerreur.text = "Une erreur s'est produite.."
  • Finally
  • ' ----- FERMETURE CONNECTION ------
  • Myconnection.close()
  • End Try
  • 'FIN
  • end if
  • End Sub
 'ENREGISTREMENT DES DONNEES DS LA BASE
         Sub BtnValide_Click(sender As Object, e As EventArgs)
    
    
          '----  SI LE TEXTBOXNOM EST VIDE ON AFFICHE UN P TIT MESSAGE ERREUR ---
    
           IF (txtboxnom.text = "") then
    
              labelerreur.text = "Veuillez completer le formulaire svp...!"
    
           ' ----SINON ON ENvOIT TOUTES LES DONNEES A LA PROCEDURE STOCKEE ---
    
           Else
    
           ' --- RECUPERATION CONNECTION  DS LE FICHIER GLOBAL.ASAX ---
             myConnection = Ctype(Session("myConnection"),sqlConnection)
    
                 
            '--- DECLARATION -------
             Dim myTrans As SqlTransaction
             Dim redirectionUrl as string
             Dim Parametre As SqlParameter
             Dim  Mycommand as new sqlcommand
    
    
             '-------------------------------
             '       GESTION DES ERREURS
             '-------------------------------
    
             '--- DEBUT DE LA TRANSACTOIN -------
    
             myTrans = myConnection.BeginTransaction
             Try
    
              '--- PROCEDURE STOKCEE AJOUTUTILISATEUR -----
    
             MyCommand = New SqlCommand("ajoututilisateur",MyConnection)
             MyCommand.CommandType = commandType.StoredProcedure
    
             '----------------------------------------------------------------
             '      PARAMETRE PASSE A LA PROCEDURE STOCKEE => AJOUTUTILISATEUR
             '      ON PLACE DONC LES VALEURS CONTENUES DS LES TEXTBOX
             '      DS LES VARIABLES POUR LA PROCEDURE STOCKEE
             '----------------------------------------------------------------
    
             Mycommand.parameters.add("@insertnom", SqlDbType.nvarchar).value = Txtboxnom.text
             Mycommand.parameters.add("@insertprenom", SqlDbType.nvarchar).value = TxtBoxprenom.text
             Mycommand.parameters.add("@insertadresse", SqlDbType.nvarchar).value = TxtBoxad.text
             Mycommand.parameters.add("@insertville", SqlDbType.nvarchar).value = TxtBoxvi.text
             Mycommand.parameters.add("@inserttelephone", SqlDbType.nvarchar).value =TxtBoxtel.text
             Mycommand.parameters.add("@inserdate", sqlDbType.datetime).value=calendar.selecteddate
    
    
               '---- RECUPERATION DE LA CLEF INSERER ------
    
               Parametre = MyCommand.Parameters.Add("@clefutilisateur", SqlDbType.Int)
               Parametre.Direction = ParameterDirection.Output
    
               ' --- EXECUTION DE LA COMMANDE AVEC RECUPERATION DU DERNIER INSERER
    
               Mycommand.transaction = Mytrans
               Mycommand.ExecuteReader()
    
    
               '--- ON RECUPERE LA PK RECEMENT INSERER ET ON REDIRIGE LE TOUT -----
    
               Dim dernier_insere = CInt(MyCommand.Parameters("@clefutilisateur").Value.ToString())
    
               '---- REDIREXCTION -----
                RedirectionURL = "details_insertion.aspx?id="+dernier_insere.ToString()
    
               '--- COMMIT = Valide la transaction de base de données -----
    
              
                myTrans.Commit()
    
               '---- REDIRECTION -------
               Response.Redirect(RedirectionURL)
    
             Catch
             ' ---ici on place le code à exécuter si l’erreur se produit
    
                ' --- Rollback = Restaure une transaction à partir d'un état d'attente
    
                 myTrans.Rollback()
    
                labelerreur.text = "Une erreur s'est produite.."
    
               Finally
              ' ----- FERMETURE CONNECTION ------
               Myconnection.close()
             End Try
    
          'FIN
          end if
    
    End Sub

 Conclusion


Enjoy

Christophe

http://membres.lycos.fr/annmys ql/  

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source .NET (Dotnet) INSERTION / RECUPERATION D'IMAGE STOCKEE DANS UNE DB MS SQL ...
Source .NET (Dotnet) AFFICHER LE CONTENU D'UNE FEUILLE EXCEL DANS UN DATAGRID
Source avec Zip Source .NET (Dotnet) PROCEDURE STOCKEE => INSERTION DES DONNEES DANS UNE TABLE
Source avec Zip Source .NET (Dotnet) P'TIT LIVRE D'OR EN C# AVEC UN FICHIER XML POUR STOCKER LES ...
Source avec Zip Source .NET (Dotnet) [EXEMPLE] CONTROLE DE VALIDATION

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

Commentaires et avis

Commentaire de jesusonline le 02/08/2004 13:08:18 administrateur CS

comme d'hab du joli boulot :)

Commentaire de jimmy69 le 02/08/2004 13:36:57


Merci Cyril, je te renvoi la balle ....car tu es toujours presents qd j'ai un stress :-) ...et je t'en remercie vraiment ....!

Je prepare un code sur les triggers ...mais bon j'ai un peu de mal n'etait pas programmeur...mais bon j'avance...

Tout ce que j'espere c'est que mes codes (exemples)puissent servir a d'autres...

A bientot

Christophe
Life is a choice :-)

Commentaire de arcollet le 02/08/2004 15:38:46

Bonjour,

Y a t il un avantage à gérer la transaction côté code plutôt que côté Transact-SQL ?

Merci de votre réponse et de votre exemple

Denis

Commentaire de jimmy69 le 02/08/2004 16:00:40

salut salut Denis,

Voila une ...oui une tres tres bonne question?!
Pour moi je dirai et je suis pour... gerer les transactions  sous transac-sql de cette façon on n'encombre un peu moins le reseaux...comme pour les procedures stockees !
Mais est ce qu'il y'a un avantage a gerer les transactions cote code... j'en ai aucune idée....sorry !

j"avais trouve un exemple sur les transactions (code)et je me suis dit que je pourrais faire un p'tit exemple pour les visiteurs de code sources :-)

Mais bon ta question est interessante et si tu as le temps je te conseille de la poser ds le forum voir un peu ce que les gens en pensent...non!

Allez moi je vais profiter un peu du soleil

Ciao Denis

Commentaire de arcollet le 02/08/2004 16:28:29

Je vois 3 raisons :
- la gestion/récupération d'erreurs fines qui est beucoup plus souple (puissante ?) coté code que côté transac- slq
- la possibilité de gérer 2 transactions différentes sur 2 serveurs de données différents.
- l'indépendance vis à vis de la base de données niveau code.

Ton exemple m'a en fait donné une idée (qui n'est pas neuve). Celle de créer une class 'transact' qui marcherait à la fois sur SQL Server et Oracle.

Lors de l'appel de 2 procédures stockés par exemple (Oracle + SQL Server), je choisi si on la fait Transact ou non ! Et ou çà a merdé si çà merde !

Ce qui résoudrait mon cas tordu d'une appli mi SQL Server mi Oracle.

Merci jimmy69

Denis

Commentaire de jimmy69 le 02/08/2004 22:37:58

Bonsoir Denis,

Je te remercie pour tes comments qui nous en apprennent encore plus !

A plus Denis...

Ciao
Christophe
Un bouillonnais

Commentaire de iatidal le 16/03/2008 19:14:34

merci pour les codes que vos offres sa m'aide dans mes étude

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales