catch语句是程序有异常时才执行的啊

解决方案 »

  1.   

    你的意思是不是说如果插入成功但没更新的话就.rollback?
      

  2.   

    那我这个应该怎么弄?我是想gridview里有一条不成功,就不让他执行sql 语句,直接跳到catch句块
      

  3.   

    你的意思是不是说如果插入成功但没更新的话就.rollback?,是这个意思
      

  4.   

    不明白你说的"如果gridview 里有多条数据,有些是成功的,有些是不成功"是什么意思
      

  5.   

    不明白你说的"如果gridview 里有多条数据,有些是成功的,有些是不成功"是什么意思
      

  6.   

    myCommand.ExecuteNonQuery(); 判断这个东西的返回值~决定是否回滚PS:别凡事指望try catch,一来效率低,二来,这里貌似也没发生异常啊,不能这么等它catch
      

  7.   

    if()
    {
      //插入和更新都成功的话
      Commit(); 
    }
    else
    {
       .rollback();
    }
    //写法好多
      

  8.   

    catch (SqlException ex) 这里只捕获SqlException类型的异常,其他类型的不管改成:catch (Exception ex)
      

  9.   


    哪里,你可以 throw new Excepiton("错误描述");  自定义异常
    这样不就行了吗!
      

  10.   

    if() 

      
      Commit(); 

    else 

      .rollback(); 

    if 里要写两句 myCommand.ExecuteNonQuery(); 吗
    我不懂应该怎么写,我试过如果写一个myCommand.ExecuteNonQuery(); 他就有一句sql不执行!像你这样的话,是不是有一条不成功的就连同那条成功的一起回滚了?
      

  11.   

     SqlConnection myConnection = new SqlConnection(@"server=NTXDRJ\SQLEXPRESS11;uid=sa;pwd=sa;database=KUCGL");
                        myConnection.Open();
                        SqlTransaction myTrans = myConnection.BeginTransaction();
                        SqlCommand myCommand = new SqlCommand("", myConnection);
                        myCommand.Transaction = myTrans;
                        try
                        {
                           
                            myCommand.CommandText = "insert into caittemp(bh,hpbm,sl,dj,je) values ('" + this.DanHTextBox.Text + "','" + HuoPBM + "','" + ShuL + "','" + JiaQJ + "','" + JingE + "')";
                            count = myCommand.ExecuteNonQuery();
                            myCommand.CommandText = "update goods set kcsl='" + KuCSL + "',kcje='" + KuCJE + "',jqj='" + JiaQJ1 + "' where hpbm='" + Request.QueryString["Source"] + "'";
                            count1= myCommand.ExecuteNonQuery();
                            myCommand.ExecuteNonQuery();
                            if (count > 0 && count1 > 0)
                            {
                                myTrans.Commit();
                                RegisterStartupScript("message", "<script>alert('数据操作成功');</script>");
                            }
                            else
                            {
                                RegisterStartupScript("message", "<script>alert('数据操作失败');</script>");
                                myTrans.Rollback();
                            }
                            
                        }
                        catch (Exception ex)
                        {
                            Response.Write(ex.ToString());
                            RegisterStartupScript("message", "<script>alert('数据操作失败');</script>");
                            myTrans.Rollback();
                        }
    我重新改了,还是没有我想要的结果,各位再帮我看看哪里出错了?
      

  12.   

    你搞错了吧,try——catch是用来捕捉异常的
    事务回滚的话@@error是0 的,没有异常
    应该是用ExecuteNonQuery()的结果-影响的记录数来判断是否成功
      

  13.   

    实现是当然可以实现
    但是使用try catch的效率远不如if
    只要自己的逻辑清晰了,if也一样可以安全。
    Just try~