首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

事务应用,请高手指教解决办法

2012-02-02 
事务应用,请高手指教类中有三个方法,分别通过参数执行SQL插入怎么把这三个方法做到事务中,因为这三个插入

事务应用,请高手指教
类中有三个方法,分别通过参数执行SQL插入

怎么把这三个方法做到事务中,因为这三个插入是有关联的,一个不成功,都不成功


  public string AddOrderInfo(Conn cn, string p_strXml)
  {  
  try
  {
   
  AddOrder(conn,p_strXml);
  AddOrderSeg(conn,p_strXml);
  AddCuster(conn,p_strXml);
   
  }
  catch
  {
   
  }
  }
   

如果分配给命令的连接位于本地挂起事务中,ExecuteScalar 要求命令拥有事务。命令的 Transaction 属性尚未初始化。

public void AddOrder(SqlConnection cn, string p_strXml)
{
  //源码类似AddCuster方法
}

public void AddOrderSeg(SqlConnection cn, string p_strXml)
{
  //源码类似AddCuster方法
}

public void AddCuster(SqlConnection cn, string p_strXml)
{
  string strSql = "insert into bb_OrderCusts (numOrderId,vcPerName,vcIdentCardNo) values (@numOrderId,@vcPerName,@vcIdentCardNo)";
  SqlCommand cmd = new SqlCommand(strSql, cn);
  cmd.Parameters.Add("@numOrderId", SqlDbType.Int).Value = Convert.ToInt32(iid);
  cmd.Parameters.Add("@vcPerName", SqlDbType.VarChar).Value = np.FindTextByPath("//eg/Custer/rec/PerName");
  cmd.Parameters.Add("@vcIdentCardNo", SqlDbType.VarChar).Value = np.FindTextByPath("//eg/Custer/rec/IdentCardNo");
  cmd.ExecuteNonQuery();  
}

[解决办法]
用存储过程的事务多方便呀
[解决办法]

C# code
        public string AddOrderInfo(Conn cn, string p_strXml)         {                try               {                   using(TransactionScope scope=new TransactionScope ())                  {                     AddOrder(conn,p_strXml);                      AddOrderSeg(conn,p_strXml);                      AddCuster(conn,p_strXml);                   }              }               catch               {                               }         } 

热点排行