回 帖 发 新 帖 刷新版面

主题:请帮我看一下这段代码,有一个不明白的地方

private static SqlCommand[] GetPrepareSqlCommands(params string[] SpNames)
        {
            int count=SpNames.Length;
            SqlCommand[] cmds=new SqlCommand[count];
            SqlParameter[] p=null;
            for(int i=0;i<count;i++)
            {
                cmds[i]=new SqlCommand(SpNames[i]);
                cmds[i].CommandType=CommandType.StoredProcedure;
                p=this.GetSqlParametersByStoredProcedure(SpNames[i],false);
                for(int j=0,k=p.Length;j<k;j++)
                {
                    p[j].SourceColumn=p[j].ParameterName.Substring(1);
                    cmds[i].Parameters.Add(p[j]);
                }
            }
            return cmds;
        }
            
private SqlParameter[] GetSqlParametersByStoredProcedure(string spName,bool returnParameter)
        {
            using(SqlConnection conn=new SqlConnection(connStr))
            {
                SqlCommand cmd=new SqlCommand(spName,conn);
                cmd.CommandType=CommandType.StoredProcedure;
                conn.Open();
                SqlCommandBuilder.DeriveParameters(cmd);
                conn.Close();

                if(!returnParameter)
                {
                    cmd.Parameters.RemoveAt(0);
                }

                SqlParameter[] pmtGroup=new SqlParameter[cmd.Parameters.Count];
                cmd.Parameters.CopyTo(pmtGroup,0);
                
                return pmtGroup;
            }
        }

这是一段动态获取存储过程中参数的代码,请问为什么要在p=this.GetSqlParametersByStoredProcedure(SpNames[i],false);
中把returnParameter设置为false?这样一来就会执行
if(!returnParameter)
                {
                    cmd.Parameters.RemoveAt(0);
                }
这不是把参数都去掉了吗?

回复列表 (共2个回复)

沙发

并不是全部去掉,只是在循环的时候逐步去掉第一个参数。

板凳

原来如此,多谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册