看你的代码,没有问题。建议跟踪一下吧。
看看那个事务对象是不是为NULL

解决方案 »

  1.   

    增加一句
    myTrans= myCon11.BeginTransaction();
      

  2.   

    前面已经myCon11.BeginTransaction();
    微软说发生错误时Transaction 有可能已经不存在了 !
    可myTrans  还有呀!?
      

  3.   

    试试下面的:
    SqlConnection myCon11 = new SqlConnection(strConStr);
    myCon11.Open();
    SqlTransaction myTrans = myCon11.BeginTransaction(solationLevel.ReadCommitted,
    "MyTransaction");   //建立事務         
    SqlCommand myCmd1 = new SqlCommand();
    myCmd1.Transaction = myTrans;
    myCmd1.Connection = myCon11;
    //保存到數據庫
    strSel = "insert into filelead(fileno,filepath,filetheeme,filelead,filetype," +   
       "sailman,saildate,doctype,postfilesize, postfiletype)" +  
    "value('"+strPath+"', '"+strOPath+"', '"+strFiletHeeme+"', '"+strFileLead +"', '"+strFileType+"', '"+strSailMan+"', '"+strSailDate+"', '"+strDocType +"', "+strPostFileSize+", '"+strPostFileType+"')" ;
    myCmd1.CommandText = strSel;
    try
    {
       myCmd1.ExecuteNonQuery();
       myTrans.Commit();
    }
    catch(Exception e1)
    {
       myTrans.Rollback();
       myMsg("插入表filelead出錯");
    }
    finally
    {
       myCon11.Close();
    }
      

  4.   

    就是这样子写的呀!
    但是myCmd1.ExecuteNonQuery() 出错后
    myTrans.Rollback();执行时又出错了!
    然后就是标题的错误提示!
    莫名奇妙!
      

  5.   

    把你的这句--->
    myCmd1.Transaction = myTrans;
    myCmd1.Connection = myCon11;
    换成--------->
    myCmd1.Connection = myCon11;
    myCmd1.Transaction = myTrans;
    试试
      

  6.   

    up,我也碰到上面的問題
    如果
    rollback不寫在catch裡面可以執行