对数组中的每个值运行SQL存储过程

时间:2016-08-17 11:15:21

标签: c# arrays sql-server stored-procedures

Exception

我想为基金(数组)中的每个值运行我的SP。我应该通过在SP中传递数组在SP中执行此操作还是应该在c#中完成? 如果在c#中如何?我试过,它运行第一个值然后第二个值的循环它给出错误:

  

ConnectionString属性尚未初始化

(代码如下)如果在SP中如何?

1 个答案:

答案 0 :(得分:2)

问题在于您放置using (strCon)的位置 - 因为它在循环中然后在第一次放置strCon之后,然后您将没有与数据库的打开连接使用

using移至foreach

之上
using (strCon)
{        
    foreach (var fund in fundList)
    {
        SqlCommand cmd = new SqlCommand("[dbo].[z_Formulas2]", strCon);
        cmd.CommandType = CommandType.StoredProcedure;
        SqlDataAdapter sda = new SqlDataAdapter(cmd);

        cmd.Parameters.Add(new SqlParameter("@Fund_ID", fund));
        cmd.Parameters.Add(new SqlParameter("@XFund_ID", ""));
        cmd.Parameters.Add(new SqlParameter("@Start_Dated", fromDate));
        cmd.Parameters.Add(new SqlParameter("End_Dated", toDate));

        sda.Fill(ds);
    }
}

当前执行此操作的方法的替代方法是将数组作为参数传递给SP - 以便将所有这些来回保存到数据库中。为此,请检查this question