Rollback ...

maevacmoi Messages postés 44 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 1 décembre 2003 - 31 oct. 2003 à 15:53
maevacmoi Messages postés 44 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 1 décembre 2003 - 3 nov. 2003 à 07:38
Hello !

J'ai une requête SQL "insert into", qui fonctionne correctement. Mais maintenant je voudrais effectuer un rollback du dernier enregistrement, en cas d'erreur. Malheureusement dès que j'utilise les 4 lignes mises en commentaire ci-dessus, il n'y a plus d'insertion dans la base ... Est-ce qu'il faut utiliser une autre méthode ? ou y a-t-il une erreur dans mon code ? merci d'avance !

// INSERTION DONNEES => PLATE-FORME
//query.CommandText = "DECLARE @plateforme VARCHAR(50);" +
//" SELECT @plateforme = 'WDP_plateforme';" +
//" BEGIN TRANSACTION WDP_plateforme; " ;
query.CommandText = "INSERT INTO ResultatRequete" +
"(" + champs + ")" + " VALUES " + "("+ result +")";
try
{
// DataSet
dsDonnees.DataSetName = "insertData";
adapter.Fill(dsDonnees,"insertData") ;
ligneOK++;
result="";
}
catch
{
query.CommandText += "rollback";
// DataSet
dsDonnees.DataSetName = "insertData";
adapter.Fill(dsDonnees,"insertData") ;
result="";
}

2 réponses

cs_Crazyht Messages postés 1522 Date d'inscription mardi 18 décembre 2001 Statut Membre Dernière intervention 21 août 2010 8
31 oct. 2003 à 16:01
Regarde la doc au sujet de l'objet Transaction il est dedié a ce genre de chose.

A++

:-p Crazyht :)

[Admin Codes-Sources]
[Membre Developer-Association]

Un programmeur, c'est quelqu'un qui résout pour toi, de façon incompréhensible, un problème que tu ignorais avoir...
0
maevacmoi Messages postés 44 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 1 décembre 2003
3 nov. 2003 à 07:38
Effectivement, merci pour le coup de pouce.

SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();

// Start a local transaction.
SqlTransaction myTrans = myConnection.BeginTransaction();

// Enlist the command in the current transaction.
SqlCommand myCommand = myConnection.CreateCommand();
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
try
{
myTrans.Rollback();
}
catch (SqlException ex)
{
if (myTrans.Connection != null)
{
Console.WriteLine("An exception of type " + ex.GetType() +
" was encountered while attempting to roll back the transaction.");
}
}

Console.WriteLine("An exception of type " + e.GetType() +
"was encountered while inserting the data.");
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
0
Rejoignez-nous