交易物件未和連接物件相關連??
在寫一個使用事務更新DataSet發生了如題的錯誤,大家看看如何修改。。。
以下是第三層代碼
public class UpdateDataSet_ :IUpdateDataSet_
{
SqlConnection conn ;
public UpdateDataSet_()
{
conn = new SqlConnection(HR.Model.Common.LoginInfo.userLoginInfo.companyConnstring);
}
#region IUpdateDataSet_ 成員
public void updateDataSet_(DataSet dsChanges, string[] tableName, SqlDataAdapter[] myDA)
{
SqlTransaction trans;
conn.Open();
SqlDataAdapter[] _myDA = myDA;
trans = conn.BeginTransaction();
try
{
for(int i=0;i<myDA.Length;i++)
{
_myDA[i].SelectCommand.Transaction = trans;
_myDA[i].UpdateCommand.Transaction = trans;
_myDA[i].InsertCommand.Transaction = trans;
_myDA[i].DeleteCommand.Transaction = trans;
_myDA[i].Update(dsChanges,tableName[i]);
}
trans.Commit();
}
catch(System.Exception ex)
{
trans.Rollback();
throw ex;
}
finally
{
if(conn.State == ConnectionState.Open)
conn.Close();
}
}
public SqlDataAdapter GetDataAdapter(string SQL_Select,string SQL_Update,string SQL_Insert,string SQL_Delete,
SqlParameter[] GetParmsUpdate,SqlParameter[] GetParmsInsert,SqlParameter[] GetParmsDelete)
{
SqlDataAdapter myAdapter = new SqlDataAdapter(SQL_Select,conn);
SqlCommand myCmd;
myCmd = new SqlCommand(SQL_Update,conn);
SqlParameter[] updatePamrs = GetParmsUpdate;
foreach(SqlParameter parms1 in updatePamrs)
myCmd.Parameters.Add(parms1);
myAdapter.UpdateCommand = myCmd;
myCmd= new SqlCommand(SQL_Insert,conn);
SqlParameter[] insertParms = GetParmsInsert;
foreach(SqlParameter parms2 in insertParms)
myCmd.Parameters.Add(parms2);
myAdapter.InsertCommand = myCmd;
myCmd = new SqlCommand(SQL_Delete,conn);
SqlParameter[] deleteParms = GetParmsDelete;
foreach(SqlParameter parms3 in deleteParms)
myCmd.Parameters.Add(parms3);
myAdapter.DeleteCommand = myCmd;
return myAdapter;
}
#endregion
}