C# 使用foreach访问列表
我使用foreach循环访问列表中存储的对象(类型为fine)的值。然后调用数据库查询,将这些值保存到数据库中 这是我正在使用的代码:C# 使用foreach访问列表,c#,sql-server,collections,foreach,C#,Sql Server,Collections,Foreach,我使用foreach循环访问列表中存储的对象(类型为fine)的值。然后调用数据库查询,将这些值保存到数据库中 这是我正在使用的代码: foreach (Meal ml in mVals) { mID = ml.mealID; MessageBox.Show(Convert.ToString(mID)); string oString2 = " INSE
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();
}
但是,这仅适用于列表中的最后一个值。下一个循环迭代似乎在执行相同的函数,从而保存相同的记录,给出一个
违反主键约束的错误
我在列表中循环的方式是否有错误 订单餐表的结构是什么? 可能您的表中有主键,您需要检查您是否没有复制它 尝试从sql管理列表中输入值。 确认列表中的每个项目中没有特殊字符(如逗号和撇号)
我认为可以连接一组insert语句,然后执行EXCEUTENONQUERY以获得更好的性能 能否添加有关
orderDine
表结构的信息?OrderID在哪里?您没有向orderID传递任何内容吗?您的代码让我得出结论,您在整个enitre循环中传递的是相同的orderID
。在做其他事情之前,您应该先了解参数化SQL。停止将值直接嵌入SQL—这是非常不安全的(例如,面对包含撇号的正常值,它非常脆弱。)@CDamsinghe:他们想破坏自己的数据库吗?你确定他们没有误解吗?我会非常紧张,如果客户坚持故意包含SQL注入漏洞,那么我会编写任何代码。