读书人

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

发布时间: 2012-02-02 23:57:14 作者: rapoo

事务应用,请高手指教
类中有三个方法,分别通过参数执行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               {                               }         } 

读书人网 >asp.net

热点推荐