mysql transaction (commit et rollback)
ci-dessous le code que j'utilise pour MySqlTransaction et il fonctionne parfaitement....
mais le problème est que je suis en utilisant un seul exemple de mysqlcommand j'ai à usage unique PARAMÈTRE. qui est de ruiner ma requête. est-il un autre moyen de contourner le faire....
j'ai essayé de jeter cmd après chaque requête, mais d'aucune utilité.. 🙁
con.Open()
Dim sqlTran As MySqlTransaction = con.BeginTransaction()
Dim cmd As MySqlCommand = con.CreateCommand()
cmd.Transaction = sqlTran
Dim str As String = Nothing
Try
cmd.CommandText = "SELECT myid FROM memaster where Adate=@adate and ANo=@ano and ASource=@asrc"
cmd.Parameters.AddWithValue("@adate", txt_bpass_adate.Text)
cmd.Parameters.AddWithValue("@ano", txt_bpass_af.Text)
cmd.Parameters.AddWithValue("@asrc", txt_bpass_asource.Text)
str = cmd.ExecuteScalar()
'cmd.Dispose()'
If str Is Nothing Then
cmd.CommandText = "Insert into memaster (ADate,ANo,ASource) values (@aDate,@aNo,@aSRC)"
cmd.Parameters.AddWithValue("@aDate", txt_bpass_adate.Text)
cmd.Parameters.AddWithValue("@aNo", txt_bpass_af.Text)
cmd.Parameters.AddWithValue("@aSRC", txt_bpass_asource.Text)
cmd.ExecuteNonQuery()
End If
sqlTran.Commit()
Catch ex As Exception
Try
sqlTran.Rollback()
Catch ex1 As Exception
End Try
End Try
j'ai réellement envie de le feu plus de 4 requêtes de transaction unique, de sorte que si quelque chose va mal, je peux restauration...
si tout onebody toute autre méthode de bien vouloir partager le concept wid moi...
For index As Integer = 1 To 5
cmd.CommandText = "Insert into detail (ID,BNos,SNo) values (@FID1,@BNo,@SeqN1)"
cmd.Parameters.AddWithValue("@FID1", str)
cmd.Parameters.AddWithValue("@BNo", str1)
cmd.Parameters.AddWithValue("@SeqN1", txt_bpass_sqn1.Text)
cmd.ExecuteNonQuery()
Next
lorsque vous jetez un exemple vous ne pouvez pas utiliser plus de la connexion est fermée et il est préparé pour la collecte des ordures. Pourquoi vous devez utiliser une seule instance de commande? Je ne comprends pas votre problème, essayez de mieux expliquer.
c'.Cmd.Dispose(); tiendrait bon.ce qui se passe quand vous donnez dispose()?
Vous spécifiez le problème vous-même: vous êtes en utilisant un
en fait, rien ne se passe après l'élimination, il n'est pas même en donnant une erreur et je peux utiliser la même instance sans aucun problème.
oui, mais je dois utiliser un seul.... est-il possible en fait, j'ai à feu à plus de 3 requêtes et à maintenir tout au sigle de l'opération, de sorte que si quelque chose va mal, je peux restauration
c'.Cmd.Dispose(); tiendrait bon.ce qui se passe quand vous donnez dispose()?
Vous spécifiez le problème vous-même: vous êtes en utilisant un
MySqlCommand
quand vous devriez être à l'aide de deux.en fait, rien ne se passe après l'élimination, il n'est pas même en donnant une erreur et je peux utiliser la même instance sans aucun problème.
oui, mais je dois utiliser un seul.... est-il possible en fait, j'ai à feu à plus de 3 requêtes et à maintenir tout au sigle de l'opération, de sorte que si quelque chose va mal, je peux restauration
OriginalL'auteur neerajMAX | 2013-01-10
Vous devez vous connecter pour publier un commentaire.
Exécuter plusieurs commandes dans la même transaction, vous devez attribuer l'objet de la transaction à chaque commande individuellement:
Comme d'autres l'ont mentionné, il est généralement une bonne idée de
Dispose()
objets (qui sontIDisposable
) dès que vous avez terminé de travailler avec eux. Après l'élimination des objets, ils ne peuvent plus être utilisés.Evenhuis : je l'ai eu merci pour votre aide... thumbs up 🙂
OriginalL'auteur C.Evenhuis
Vous pouvez utiliser l'Aide de mot-clé pour l'auto disposer des objets.
je ne sais pas VB mais je sais que C#.
Veuillez convertir le code en VB.
C'est une mauvaise solution - a 'l'aide d'une déclaration en c# un try catch pour vous, et si quelque chose se passe mal MySqlTransaction.cs.Dispose() est appelée, ce qui annule la transaction
Mario. ne MySqlTransaction.cs.Dispose() vraiment annuler la transaction? Si donc, pas besoin de trans.Rollback() après la capture de l'exception, et sera la meilleure solution. droit?
cela m'a répondu: stackoverflow.com/questions/641660/...
OriginalL'auteur Surendra Chauhan