上記の質問を見つけましたが、これはまさに私が探していて、解決策を実装しようとしているものです...
複数のテーブルを sqlserver 2008 に更新し、複数のテーブルでのトランザクションを確保するための最善の解決策を見つけようとしています。1 つのテーブルへの挿入が失敗した場合は、他のテーブルの以前の更新をロールバックします。
- sqldataadapter は、一度に 1 つのテーブルのみを更新します
- 一度に 1 つの dataadapter でトランザクションを実行できることはわかっていますが、複数のテーブルを更新する必要があります
以下は、上記の回答から変更されたコードですが、dataadapter でエラーになります。挿入、更新、および削除コマンドを設定する必要があると思いますが、複数のテーブルがある場合にどのように機能するかわかりませんか??? 誰かが欠けているリンクを埋めることができますか?
using (SqlConnection con = new SqlConnection(SqlServerConnectionString))
{
con.Open();
//table is an array of datatable and contains data to be inserted
for (int i = 0; i < table.Length; i++)
{
ds.Tables.Add(table[i]);
}
SqlTransaction trans = con.BeginTransaction();
SqlDataAdapter dataAdapter = new SqlDataAdapter();
//Need to set insert,select, update, delete???? on multiple tables?
//dataAdapter.Fill(ds);
dataAdapter.InsertCommand.Transaction = trans; //null object error here
dataAdapter.UpdateCommand.Transaction = trans;
dataAdapter.DeleteCommand.Transaction = trans;
try
{
dataAdapter.Update(ds);
trans.Commit();
}
catch(Exception ex)
{
trans.Rollback();
}