0

我想将两个值保存@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>变量传递为

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

因此上述函数的声明从

public void save1()

public void save1(List<SqlParameter> param)

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

4

3 回答 3

2

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

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)
    {
        /*...*/
    }
}

然后让调用例程以及 Save1(..) 函数可以访问参数,如下所示:

public/*private*/ List<SqlParameter> param = new List<SqlParameter>();

最后,您的调用例程将调用 Save1(..),如下所示:

string uname = "...";
string pwd = "...";
param.Add(new SqlParameter("@name", uname));
param.Add(new SqlParameter("@pwd", pwd));
Save1(param);
于 2017-11-16T18:46:01.423 回答
0

如果您知道只有两个参数,您可以使用它

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(param[0]);
cmd.Parameters.Add(param[1]);
cmd.ExecuteNonQuery();
于 2017-11-16T18:25:56.827 回答
-1

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

for(interesting i=0, i< parameter.Count, i++){ // var param1 = param[i]; }

于 2017-11-16T18:21:05.390 回答