我使用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();
}
但是,这仅适用于列表中的最后一个值。下一个循环迭代似乎正在执行相同的功能,从而保存相同的记录,给出
违反主键约束的错误。
我在循环列表中的方式是否有错误?
答案 0 :(得分:0)
OrderMeal表的结构是什么? 可能你的桌子上有主键,你需要知道你没有复制他。
尝试从sql管理中输入列表中的值。 验证列表中的每个项目中没有特殊字符(如逗号和撇号)。
我认为您可以连接一组insert语句,然后连接ExcuteNonQuery以获得更好的性能。