我有一个接受int [](userIDs)和int(groupID)作为参数的方法。然后它运行存储过程并将数据插入到DB
中For example:
if userIDs=[1,2,3] and groupID=4,
then I want the following data to be inserted into the DB
userID groupID
1 4
2 4
3 4
我有两个解决这个问题的方法。第一个是编写一个将单个记录插入DB的存储过程。在方法()中,我将循环遍历int []并调用存储过程n次
method()
for (int i =0; i< userID.length; i++){
// call stored procedure to insert a single record
}
第二种解决方案是将int []和int作为参数传递给存储过程,并在存储过程中进行循环。
哪种方式更好的解决方案? (如果它的第二个解决方案更好,有人可以提供有关在存储过程中处理int []的指导)
答案 0 :(得分:1)
您是否有充分的理由不想使用O / R映射器? 您的示例看起来像服务器/代码隐藏,您可以使用实体框架(或其他)来插入新值。 如果您不能使用它们,那么我会使用for(发布中的第2个)方法。但这很危险,因为你不在任何交易中。
您可以在此处开始实体框架调查:http://www.asp.net/entity-framework。 如果您出于任何原因无法使用EF,请考虑为您的sql命令使用transcation范围(请参阅http://msdn.microsoft.com/en-us/library/777e5ebh.aspx开始阅读)
答案 1 :(得分:0)
Geeeeeeeeeeeenerally说,这些东西的代码更快。你最好在你的数组C#方面进行迭代,然后调用存储过程来处理你的特定记录。
现在当然具体情况会发生变化,这听起来肯定是最好处理的。将int数组转换为数据表,然后可以有一些real fun ...
答案 2 :(得分:0)
如果您所做的只是向数据库中添加行,我认为不需要存储过程(除非这是DBA或策略的要求)。
只需遍历您的项目,然后使用ADO.NET或Entity Framework将条目添加到数据库中。