georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007
-
16 oct. 2005 à 21:26
georgeduke
Messages postés167Date d'inscriptiondimanche 6 février 2005StatutMembreDernière intervention13 avril 2007
-
17 oct. 2005 à 12:55
Bonjour,
Je n'arrive pas à mettre en oeuvre les transactions avec mysql et son connecteur C# officiel.
J'ai créé une fonction RunMySqlTransaction() qui prend en paramètre un tableau de string. Cela me permet de lancer simplement des transactions d'un lot de requêtes.
Seulement j'ai testé cette méthode en fesant une faute volontaire de syntaxe sql dans une des requetes envoyées à cette méthode, et horreur !!! Le rollback ne semble pas fonctionner :-( C'est à dire que toutes les requetes du lot qui a mis en échec la transaction ne sont pas annulées dans la base !!!
Quelqu'un peut m'aider à résoudre ce casse tête ?? Est-ce mon code
qui implique ça ? Le connecteur .net ou le paramétrage de ma base mysql
?
Voilà mon code :
public void RunMySqlTransaction(string[] transaction_cmd)
{
conn = new MySqlConnection("lachainedeconnexion....");
conn.Open();
MySqlCommand myCommand = conn.CreateCommand();
MySqlTransaction myTrans;
myTrans = conn.BeginTransaction();
myCommand.Connection = conn;
myCommand.Transaction = myTrans;
try
{
foreach (string transac_cmd in transaction_cmd)
{
myCommand.CommandText = transac_cmd;
myCommand.ExecuteNonQuery();
}
myTrans.Commit();
Console.WriteLine("Les enregistrements ont été faits dans la base !");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (MySqlException ex)
{
if (myTrans.Connection ! = null)
{
MessageBox.Show("Une exception du type " + ex.GetType() +
" a été rencontrée lors du roll back de la transaction.", "Erreur de
roll back d'une transaction !", MessageBoxButtons.OK);
}
}
MessageBox.Show("Une exception du type " + e.GetType() +
" a été rencontrée lors de l'insertion des données !", "La transaction
a bien été annulée.", MessageBoxButtons.OK);