1

我正在使用 ASP.NET 和 SQL Server 设计一个基于 Web 的物流系统。

在我的一个类中,当我尝试将数据插入数据库时​​,存在违反主键错误,但数据成功插入表中。我找不到问题出在哪里。谁能看到我做错了什么?

public int fillShipmentDetail()
{
   int success = 0;
   string connectionString = ConfigurationManager.ConnectionStrings["LGDB"].ToString();

   SqlConnection sqlCon = new SqlConnection(connectionString);

   SqlCommand sqlCom = new SqlCommand("fillShipmentDetails", sqlCon);
   sqlCom.CommandType = CommandType.StoredProcedure;

   sqlCon.Open();

   sqlCom.Parameters.AddWithValue("shipOrderID", ShipOrderID);
   sqlCom.Parameters.AddWithValue("totalWeight", TotalWeight);
   sqlCom.Parameters.AddWithValue("weightIsMetric", WeightUnit);
   sqlCom.Parameters.AddWithValue("weightIsImperial", VolumeUnit);
   sqlCom.Parameters.AddWithValue("volume", Volume);
   sqlCom.Parameters.AddWithValue("quantity", Quantity);
   sqlCom.Parameters.AddWithValue("value", Value);
   sqlCom.Parameters.AddWithValue("description", GoodsDescription);            

   success = sqlCom.ExecuteNonQuery();

   if (success == 1)
   {
      success = 1;
   }
   else
   {
      success = 0;
   }            

   sqlCon.Close();            
   return success;
}

aspx.cs

 Classes.ShipmentDetails fillShipmentDetails = new Classes.ShipmentDetails(
                getLastShipOrder, _weight, _checkMetricImperial_weight, _checkMetricImperial_volume,
                _volume, _quantity, _value, txtGoodsDescription.Text);
            int success3 = fillShipmentDetails.fillShipmentDetail();

在此处输入图像描述

正如您在下图中看到的,记录 shipOrderID 7192 已经插入到表中。

在此处输入图像描述

我已经删除了所有三个表,并插入了新数据。虽然数据插入成功,但错误再次发生。在此处输入图像描述

此屏幕截图清楚地显示了所有内容,每次新插入数据库时​​,最后一张表都会出现主键错误,正如您所见,没有成功插入任何重复的键和数据。 在此处输入图像描述

4

2 回答 2

2

looks like fillShipmentDetails.fillShipmentDetail() is getting fired twice. Put a Breakpoint in the code and check

于 2013-09-09T15:08:25.387 回答
1

shipOrderId已经存在于您的表中。

你需要赋予它一个新的独特价值。表更新的原因是因为shipOrderId已经存在,所以您可以Shipping Order使用 Id 创建一个新的,但是该顺序不是指正确的shipOrderId

于 2013-09-09T14:59:55.227 回答