【发布时间】:2017-11-19 23:50:24
【问题描述】:
我正在开发一个 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();
...
}
这样做的最佳做法是什么?
【问题讨论】:
-
了解您在该存储过程中执行的操作很重要。如果它只是几条记录的插入/更新,我根本不会使用存储过程,而是使用正确的书面参数化查询(肯定不使用 AddWithValue)
-
存储过程不包含任何复杂的操作,只是一个简单的更新。我不在我的应用程序中使用 SQL 查询来保持应用程序层分开,所以你的建议对我的情况没有帮助。
-
您也可以传入 XML 并将其作为批处理更新。
标签: c# sql performance stored-procedures processing-efficiency