private SqlCommand CreateCmd(string procName, params object[] ps)
        {
            OpenConnection();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = procName;
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = mycon;            SqlParameter[] sqlpa = null;            if (ps != null)
            {
                SqlCommandBuilder.DeriveParameters(cmd);
                cmd.Parameters.RemoveAt(0);
                sqlpa = new SqlParameter[cmd.Parameters.Count];
                cmd.Parameters.CopyTo(sqlpa, 0);
                for (int i = 0; i < sqlpa.Length; ++i)
                {
                    sqlpa[i].Value = ps[i];
                }
            }
            return cmd;        }cmd.Parameters.RemoveAt(0)是删除指定位置的参数,这里删除的是什么参数呢?

解决方案 »

  1.   

    你这里参数一个都没写出来,我哪知道删除哪个,只能告诉你删除掉第一个。
    比如:
    cmd.Parameters.Add(new SqlParameter("@a"));
    cmd.Parameters.Add(new SqlParameter("@b"));
    cmd.Parameters.Add(new SqlParameter("@c"));那么这样他删除掉的就是@a这个参数
      

  2.   

    不要使用这类有严重设计bug的所谓SQLHelper程序。你不如自己正常使用ADO.NET写代码,会更简单和清晰。
      

  3.   


     cmd.Parameters.RemoveAt(0);
                    sqlpa = new SqlParameter[cmd.Parameters.Count];
                    cmd.Parameters.CopyTo(sqlpa, 0);
                    for (int i = 0; i < sqlpa.Length; ++i)
                    {
                        sqlpa[i].Value = ps[i];
                    }这个根本看不懂。