私はそれをクリアしたいいくつかの混乱がありました。私はADO.NETを使用してデータベースに値を挿入しています。 5つ目のアイテムのデータを挿入しているときにエラーが発生した場合は、データベースに挿入したものをロールバックする必要がある場合、10個のアイテムを挿入したいとします。C#.NETのロールバックINSERTコマンド
私はちょうどトランザクションとロールバックの方法の概念を読んで、それもプログラムでそれを実装しようとしましたが、まだそれは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();
}
誰も私を助けることができる、私のコードですか?
"エラー"が例外の場合、トランザクションをtryブロック内に持ち、catch部分をロールバックして(そして最終的にはディップシング)(または使用をキャッチしようとしますか?) –
ここは私のコードですinseertQry.ExecuteNonQuery(); myTransaction.Commit(); tryブロックとcatchのTransaction.Rollback(); –
修正したコードのバージョンを見てください。 –