日期:2014-05-20  浏览次数:20741 次

关于try catch的问题
问题:
  在数据操作中启用了事务
  try
  { 
  sqlconnection.Open();
  transaction=sqlconnection.BeginTransaction();
  sqlcommand1.ExecuteNonQuery();
  sqlcommand2.ExecuteNonQuery();
  transaction.Commit();
   
  }
  catch(SqlException e)
  {
  MessageBox.Show(e.Message);
  transaction.Rollback();
  }
如果在sqlconnection.Open时出现异常,transaction.Rollback()中执行会出现新的异常(transaction没赋值).
应该如何写try catch块呢


------解决方案--------------------
判断下是不是null就可以了。
------解决方案--------------------
C# code
using (TransactionScope scope = new TransactionScope())  
{   //创建事物对象  
    try  
    {  
        //执行事务操作的相关代码  
   
   
        scope.Complete();  //提交事物  
    }  
    catch (Exception ex) { throw ex; } //抛出异常  
    finally { scope.Dispose(); }  //回滚事物  
}

------解决方案--------------------
进入新的NET版本,请使用TransactionScope取代传统的事务模型。
------解决方案--------------------
探讨
C# code
using (TransactionScope scope = new TransactionScope())
{ //创建事物对象
try
{
//执行事务操作的相关代码


scope.Complete(); //提交事物
}
catch (Exce……

------解决方案--------------------
探讨

引用:
C# code
using (TransactionScope scope = new TransactionScope())
{ //创建事物对象
try
{
//执行事务操作的相关代码


scope.Complete(); //提交事物
}
catch (Exce……


顶这个, 多用using 这样就……