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/
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.