2017-06-17 71 views
0

我正在使用WinForms桌面應用程序。在這個應用程序上,我必須對SQL Server數據庫進行一些更新。我可以用存儲過程表參數我們應該使用帶有表參數的單個執行存儲過程還是使用單獨參數的多個執行過程?

comm.CommandType = CommandType.StoredProcedure; 
comm.Parameters.AddWithValue("@changes", changes.ToTable(false, "ItemNo", "Info")); 

做到這一點,並執行只有一次,或與一個循環過程多次與字符串參數執行的程序。

for (...) 
{ 
    ... 
    comm.CommandType = CommandType.StoredProcedure; 
    comm.Parameters.AddWithValue("@Item", "Item 1"));` 
    comm.Parameters.AddWithValue("@Info", "Info 1"));` 
    int i = comm.ExecuteNonQuery(); 
    ... 
} 

這是最好的做法嗎?

+0

重要的是要知道你在做什麼存儲過程。如果它只是少數記錄的插入/更新,我根本不會使用存儲過程,而是使用正確的書面參數化查詢(當然不使用AddWithValue)。 – Steve

+0

存儲過程不包含任何複雜的操作,只是簡單的更新。我不在我的應用程序中使用SQL查詢來保持應用程序層分離,所以你的建議對我的情況沒有幫助。 – Adnand

+1

您也可以傳遞XML並將其作爲批處理進行更新。 –

回答

1

即使您正在執行簡單的UPDATE操作,我也會採用第一種方法並將所有數據作爲表類型變量發送。

原因在這種情況下,您可以通過執行帶有表類型變量的JOIN執行update-join,並且可以一次更新多個記錄。至少,您將保存多個電話到數據庫。

相關問題