主题:请帮我看一下这段代码,有一个不明白的地方
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);
}
这不是把参数都去掉了吗?
{
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);
}
这不是把参数都去掉了吗?