2013-10-15 91 views
1

我目前有這個功能(見下文),它將答案和相關內容(例如註釋)添加到50個問題左右。我試圖通過將其更改爲存儲過程來使數據庫安全,以便我可以從用戶中刪除寫入權限。這是正確的方法嗎?將許多值傳遞給SQL Server存儲過程

我應該使用表值參數嗎?或者我應該調用存儲過程50次?前者覺得這是對的,但後者在代碼中會看起來更漂亮,但我認爲效率不高。

還是...有更好的方法嗎?

int AddAnswersToTable() 
{ 
    var Cmd = Db.NewCommand(); 
    var Str = new StringBuilder("INSERT INTO answers (qu_id,answer,notes) VALUES"); 
    int i = 1; 
    string Join = string.Empty; 

    foreach (var Qu in Page) 
    { 
     Str.Append(Join); 
     Str.Append("("); 

     Str.Append((Name = "@qu_id" + i) + ","); 
     Cmd.Parameters.AddWithValue(Name, Qu.QuId); 

     Str.Append((Name = "@ans" + i) + ","); 
     Cmd.Parameters.AddWithValue(Name, Qu.Answer.Truncate(499)); 

     Str.Append((Name = "@notes" + i) + ","); 
     Cmd.Parameters.AddWithValue(Name, Qu.Notes.Truncate(499)); 

     Str.Append(")"); 
     Join = ","; 
     i++; 
    } 

    return Cmd.ExecuteNonQuery(Str.ToString()); 
} 

在此先感謝。

回答

1

存儲過程是否是正確的方法是宗教問題。我相信它是FWIW。

調用過程50次比較簡單,但兩種方法本身都是錯誤的。

+0

有趣。我只是想多次打電話而已,盼望嘲笑! – noelicus

相關問題