Ich hatte einige Verwirrung, die ich es löschen möchte - ich füge Werte in die Datenbank mit ADO.NET. Lassen Sie mich sagen, ich möchte 10 Artikel einfügen, wenn ich Fehler beim Einfügen von Daten des fünften Artikels erhalte, sollte es zurückrollen, was auch immer ich in die Datenbank eingefügt hatte.Rollback INSERT-Befehl in C# .NET
Ich lese gerade das Konzept der Transaktion und Rollback-Methode und versuchte auch, es in das Programm zu implementieren, aber immer noch fügen Sie 4 Artikel und geben Sie mir Fehlermeldung des fünften Elements. Die Abfrage wird nicht zurückgesetzt.
Ist Transaktion und Rollback-Methode mein Problem gelöst oder muss ich andere Alternative verwenden.
hier ist mein Code,
for (int i = 0; i < itemLength - 1; i++)
{
//--- Start local transaction ---
myTrans = Class1.conn.BeginTransaction();
//--- Assign transaction object and connection to command object for a pending local transaction ---
_insertQry = Class1.conn.CreateCommand();
_insertQry.Connection = Class1.conn;
_insertQry.Transaction = myTrans;
_insertQry.CommandText = "INSERT INTO Product_PropertyValue(ItemNo, PropertyNo, ValueNo) VALUES (@ItemNo, @PropertyNo, @ValueNo)";
//_insertQry = new SqlCommand("INSERT INTO Product_PropertyValue(ItemNo, PropertyNo, ValueNo) VALUES (@ItemNo, @PropertyNo, @ValueNo)", Class1.conn);
_insertQry.Parameters.AddWithValue("@ItemNo", _itemNo[i]);
_insertQry.Parameters.AddWithValue("@PropertyNo", _propNo);
_insertQry.Parameters.AddWithValue("@ValueNo", _propValue);
_insertQry.ExecuteNonQuery();
myTrans.Commit();
}
Kann mir jemand helfen?
Wenn "Fehler" eine Ausnahme ist, haben Sie Ihre Transaktion in einem try-Block, und Rollback im Catch-Teil (und dipsosing in der letzten) (oder versuchen Sie in einer Verwendung fangen)? –
Hier ist mein Code insertQry.ExecuteNonQuery(); myTransaction.Commit(); in try Block und in catch Transaction.Rollback(); –
Schauen Sie sich die modifizierte Version Ihres Codes an. –