我要说两张桌子:


客户信息
订单


现在,由于一个客户可以拥有0个或多个订单,因此我使用Index在这两个表之间创建了一个关系。在父表中,公司名称是主键,在顺序中公司名称是索引。


我知道数据类型,大小和引擎应该相同。
我也知道公司名称应存在于父表中,以便我们可以修改子表。


我已经仔细检查了所有的人,但我仍然在C#中收到错误


  “无法添加或更新子行:外键约束失败”


for (int i = 0; i < dtgCart.Rows.Count; i++)
{
    command.CommandText = "INSERT INTO order_info (CompanyName,Order_ID,ProductName,Model,Address,Quantity,Price) VALUES(@CompanyName,@Order_ID,@ProductName,@Model,@Address,@Quantity,@Price)";
    command.Parameters.AddWithValue("@CompanyName",dtgCart.Rows[i].Cells["CompanyName"]);
    command.Parameters.AddWithValue("@Order_ID", dtgCart.Rows[i].Cells["Order_ID"]);
    command.Parameters.AddWithValue("@ProductName", dtgCart.Rows[i].Cells["ProductName"]);
    command.Parameters.AddWithValue("@Model", dtgCart.Rows[i].Cells["Model"]);
    command.Parameters.AddWithValue("@Address", dtgCart.Rows[i].Cells["Address"]);
    command.Parameters.AddWithValue("@Quantity",dtgCart.Rows[i].Cells["Quantity"]);
    command.Parameters.AddWithValue("@Price",dtgCart.Rows[i].Cells["Price"]);
    command.ExecuteNonQuery();
}
Con.Close();
Con.Dispose();


这是将数据插入子表的代码

c# - 无法添加或更新子行:外键约束失败-LMLPHP

我应该使用SET FOREIGN_KEY_CHECKS = 0;如果我这样做有什么弊端
先感谢您

最佳答案

此代码现在可以使用

      for (int i = 0; i < dtgCart.Rows.Count-1; i++)
      {
command.CommandText = "INSERT INTO order_info (CompanyName,Order_ID,ProductName,Model,Address,Quantity,Price) VALUES(@CompanyName,@Order_ID,@ProductName,@Model,@Address,@Quantity,@Price)";
command.Parameters.AddWithValue("@CompanyName",dtgCart.Rows[i].Cells["CompanyName"].Value);
command.Parameters.AddWithValue("@Order_ID", dtgCart.Rows[i].Cells["Order_ID"].Value);
command.Parameters.AddWithValue("@ProductName", dtgCart.Rows[i].Cells["ProductName"].Value);
command.Parameters.AddWithValue("@Model", dtgCart.Rows[i].Cells["Model"].Value);
command.Parameters.AddWithValue("@Address", dtgCart.Rows[i].Cells["Address"].Value);
           command.Parameters.AddWithValue("@Quantity",dtgCart.Rows[i].Cells["Quantity"].Value);
command.Parameters.AddWithValue("@Price",dtgCart.Rows[i].Cells["Price"].value);
command.ExecuteNonQuery();
    }
  Con.Close();
            Con.Dispose();

10-05 20:28