/// <summary>
        /// 带事务执行存储过程,该方法主要用于执行用于数据维护类的存储过程执行
        /// </summary>
        /// <param name="cmdText">存储过程名称</param>
        /// <param name="parms">SQL参数数组</param>
        public int ExecuteSPNoneQuery(string cmdText, SqlParameter[] parms)
        {
            openConn();
            SqlTransaction transaction = sqlConn.BeginTransaction();
            SqlCommand myCmd = new SqlCommand(cmdText, sqlConn);
            myCmd.CommandType = CommandType.StoredProcedure;
            myCmd.Parameters.AddRange(parms);
            myCmd.Transaction = transaction;
            try
            {
                return myCmd.ExecuteNonQuery();
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
            finally
            {
                closeConn();
            }
        }
提示transaction是:“检测到无法访问的代码”?
并且每次不不执行这个语句transaction.Commit();

解决方案 »

  1.   

     return myCmd.ExecuteNonQuery(); 都  return 还这么执行和访问啊 
      

  2.   

    问题在这里
    return myCmd.ExecuteNonQuery();
    transaction.Commit();
    不能先return  在提交
    因为return之后就不能提交了
    想要返回myCmd.ExecuteNonQuery();的值要这样
    int count;
    count=myCmd.ExecuteNonQuery();
    transaction.Commit();
    return count;这样就没有问题了!
      

  3.   

    /*初次录入商品时调用,向商品表、供货商表、进货表添加数据*/
    ALTER PROC InsertMercInfoAll
    (
    @Merchandise NVARCHAR(64),
    @MerchandiseID VARCHAR(64),
    @MercMoreKinds NVARCHAR(64),
    @OutPrice MONEY,
    @LeaguerPrice MONEY,
    @GuarPeriod INT,
    @MercRe NVARCHAR(256),
    @PrivName NVARCHAR(64),
    @PrivID INT,
    @PrivAddr NVARCHAR(64),
    @PrivPhoNum VARCHAR(64),
    @PrivRe NVARCHAR(128),
    @MercInNum INT,
    @InPrice MONEY,
    @InTime DATETIME,
    @InRe NVARCHAR(128)
    )
    AS
    BEGIN
    IF(NOT EXISTS (SELECT * FROM dbo.商品表 WHERE 商品ID=@MerchandiseID))
      BEGIN
    INSERT INTO dbo.商品表 VALUES(@Merchandise,@MerchandiseID,@MercMoreKinds,@OutPrice,@LeaguerPrice,
    @GuarPeriod,GETDATE(),@MercInNum,@MercRe)
    INSERT INTO dbo.供货商表 VALUES(@PrivName,@PrivAddr,@PrivPhoNum,@PrivRe)
    SET @PrivID=SELECT ID FROM dbo.供货商表 WHERE 供货商名=@PrivName
    INSERT INTO dbo.进货表 VALUES(@MerchandiseID,@PrivID,@MercInNum,@InPrice,@InTime,@MercInNum*@InPrice,@InRe)
      END
    END请问这个是怎么实现的!!
    供货商表的供货商ID是主键并且是自动增长的 我想在向进货表添加数据时同时把供货商ID添加到进货表中!
      

  4.   

                    return myCmd.ExecuteNonQuery();
                    transaction.Commit();
    return 下面这句不执行了
      

  5.   


     public int ExecuteSPNoneQuery(string cmdText, SqlParameter[] parms)
            {
                openConn();
                SqlTransaction transaction = sqlConn.BeginTransaction();
                SqlCommand myCmd = new SqlCommand(cmdText, sqlConn);
                myCmd.CommandType = CommandType.StoredProcedure;
                myCmd.Parameters.AddRange(parms);
                myCmd.Transaction = transaction;
                try
                {
                    int ret=myCmd.ExecuteNonQuery();
                    transaction.Commit();
                    return ret;            }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    closeConn();
                }
            }
      

  6.   

    提示什么错误
    public void SqlTransactioin(string[] sqls)
      {
      using(SqlConnection con = new SqlConnection(""))
      {
      conn.Open();
      SqlCommand comm = conn.CreateCommand();
      SqlTransaction trans = conn.BeginTransaction();
      comm.Transaction = trans;
      try
      {
      foreach (string sql in sqls)
      {
      comm.CommandText = sql;
      comm.ExecuteNonQuery();
      }
      trans.Commit();
      }
      catch (Exception ex)
      {
      trans.Rollback();
      }
      }
      conn.Close();
      }
    看看sqlhelper
      

  7.   

    try
                {
                    return myCmd.ExecuteNonQuery();
                    transaction.Commit();
                }
    这里错了吧。
      

  8.   

    楼主这代码有意思,try里面就return 
      

  9.   


    try里return没问题啊,
    问题是,return之后还有代码