[exemple] transaction

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"

Voila enregistrez le tout...

ca roule

Source / Exemple :


'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/annmysql/

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.