2016-08-17 58 views
3
public DataSet DataforTable(string fundID, string fromDate, string toDate) 
{ 
    string[] fundList = fundID.Split(','); 
    DataSet full = new DataSet(); 
    DataTable ds = new DataTable(); 
    full.Tables.Add(ds); 
    foreach (var fund in fundList) 
    {   
     using (strCon) 
     { 
      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); 
     } 
    } 
    return full; 
} 

我想爲基金(數組)中的每個值運行我的SP。我應該通過在SP中傳遞數組來做SP嗎,還是應該用c#來完成? 如果在C#中如何?我想,它運行的第一個值,然後for循環的第二個值提示錯誤:爲陣列中的每個值運行SQL存儲過程

The ConnectionString property has not been initialized

(代碼如下所示),如果SP如何?

+0

你不希望被進行多次調用數據庫,如果你能幫助它,所以你應該做任何你需要在SP做,它傳遞的數組中的值。 – sr28

+0

您可以用[自定義類型](https://msdn.microsoft.com/en-us/library/ms175007.aspx)然後你就可以發送陣列SP。無需爲每個值調用sp。 – NEER

+0

如果你想整個數組在存儲過程,那麼你可以傳遞字符串fundID與逗號分開。之後在存儲過程中,分割這個逗號分隔字符串。 http://stackoverflow.com/questions/11102358/how-to-pass-an-array-into-a-sql-server-stored-procedure – user2960398

回答

2

問題出在你放置的位置using (strCon) - 因爲它在循環中,所以在第一次處理strCon後,你將不會有打開的連接到數據庫使用。

移動usingforeach以上:

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

+0

是當然,我想做到這一點以這種方式將它傳遞給SP但如何?任何示例的解釋都將非常可觀 – MaazKhan47

+0

@ MaazKhan47 - 鏈接是否有助於您理解? –

+0

是的,但在我的情況下,我需要創建一個遊標或使用while循環。數據庫中的 – MaazKhan47