ADO.NETを使用してデータベースに値を挿入しています。5番目のアイテムのデータを挿入しているときにエラーが発生した場合、10個のアイテムを挿入したいとしましょう。データベースに挿入したものはすべてロールバックする必要があります。
Transaction と Rollback メソッドの概念を読み、プログラムに実装しようとしましたが、それでも 4 つの項目が挿入され、5 番目の項目のエラー メッセージが表示されます。挿入クエリをロールバックしません。
トランザクションとロールバックの方法で問題は解決しましたか、それとも他の方法を使用する必要がありますか。
ここに私のコードがあります、
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();
}
誰でも私を助けることができますか?