我发现上面的问题正是我正在寻找并尝试实施解决方案的问题......
我正在尝试找到将多个表更新到 sqlserver 2008 并确保多个表上的事务的最佳解决方案。如果插入一个表失败,则回滚其他表上的先前更新。
- sqldataadapter 一次只更新一张表
- 我知道我们可以一次在一个数据适配器上进行事务,但需要更新多个表
以下是根据上面提供的答案修改的代码,但数据适配器出错。我想我需要设置插入、更新和删除命令,但不确定如果有多个表是如何工作的???有人可以填写缺少的链接吗?
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();
}