C# 我想将SqlParameter列表传递给一个函数,该函数在C中执行存储过程#

C# 我想将SqlParameter列表传递给一个函数,该函数在C中执行存储过程#,c#,asp.net,lis,C#,Asp.net,Lis,我想将两个值,比如@name和@pwd保存到一个表中,为此,我可以在aspx页面中使用以下代码 public void save1() { try { using (SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString)) { using(SqlCommand cmd = new

我想将两个值,比如
@name
@pwd
保存到一个表中,为此,我可以在aspx页面中使用以下代码

public void save1()
{
    try
    {
        using (SqlConnection con=new SqlConnection(ConfigurationManager.ConnectionStrings["myCon"].ConnectionString))
        {
            using(SqlCommand cmd = new SqlCommand("SP_TEST",con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@name", txtUname.Text);
                cmd.Parameters.Add("@pwd", txtPwd.Text);

                cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    { }
}
但我想将这两个变量作为单个
列表
变量作为

List<SqlParameter> param = new List<SqlParameter>();
param.Add(new SqlParameter("@name", uname));
param.Add(new SqlParameter("@pwd", pwd));

public void save1(列表参数)

但我的问题是我不知道如何从这个
param
中提取这两个变量,然后将它们添加到
cmd
变量中。我需要您的帮助。

您可以使用for循环访问列表中的每个参数

对于(有趣的i=0,i}

如果你知道只有两个参数,你可以使用这个

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(param[0]);
cmd.Parameters.Add(param[1]);
cmd.ExecuteNonQuery();

让您的保存功能如下所示:

public void Save1(List<SqlParameter> param)
{
    try
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager
            .ConnectionStrings["myCon"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("SP_TEST", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                foreach (var item in param)
                    cmd.Parameters.Add(item);
                cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
        /*...*/
    }
}

听起来像是一项查找
foreach
循环的工作。很难相信你甚至不知道如何循环。你也可以使用
AddRange()
不知道为什么这个问题会被否决,这很琐碎,但每个人都是从一开始就这样做的……不仅仅是为了两个变量@Mohamed,最后我使用了`foreach(param中的var p)`{cmd.Parameters.Add(p);}`是的,也可以。如果有帖子回答了你的问题,请将其标记为答案。如果有多个帖子提供帮助,请向上投票,因为这有助于StackOverflow变得更好。
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(param[0]);
cmd.Parameters.Add(param[1]);
cmd.ExecuteNonQuery();
public void Save1(List<SqlParameter> param)
{
    try
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager
            .ConnectionStrings["myCon"].ConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("SP_TEST", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                foreach (var item in param)
                    cmd.Parameters.Add(item);
                cmd.ExecuteNonQuery();
            }
        }
    }
    catch (Exception ex)
    {
        /*...*/
    }
}
public/*private*/ List<SqlParameter> param = new List<SqlParameter>();
string uname = "...";
string pwd = "...";
param.Add(new SqlParameter("@name", uname));
param.Add(new SqlParameter("@pwd", pwd));
Save1(param);