使用foreach访问列表

时间:2015-04-27 08:47:18

标签: c# sql-server collections foreach

我使用foreach循环来访问存储在列表中的对象(Meal类型)的值。然后我调用数据库查询将这些值保存到数据库中。

这是我正在使用的代码:

foreach (Meal ml in mVals)
            {
                    mID = ml.mealID;
                    MessageBox.Show(Convert.ToString(mID));
                    string oString2 = " INSERT into [dbo].[OrderMeal] (orderId,mealId,quantity) " + " VALUES ('" + orderId + "','" + mID + "','" + Convert.ToInt32(quant.Text) + "') ;";
                    SqlCommand oCmd2 = new SqlCommand(oString2, myConnection);
                    oCmd2.ExecuteNonQuery();

            }

但是,这仅适用于列表中的最后一个值。下一个循环迭代似乎正在执行相同的功能,从而保存相同的记录,给出

  

违反主键约束的错误。

我在循环列表中的方式是否有错误?

1 个答案:

答案 0 :(得分:0)

OrderMeal表的结构是什么? 可能你的桌子上有主键,你需要知道你没有复制他。

尝试从sql管理中输入列表中的值。 验证列表中的每个项目中没有特殊字符(如逗号和撇号)。

我认为您可以连接一组insert语句,然后连接ExcuteNonQuery以获得更好的性能。