【发布时间】:2013-09-09 14:57:14
【问题描述】:
我正在使用 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 记录已插入表中。
我已经删除了所有三个表,并插入了新数据。虽然数据插入成功但又出现错误。
此屏幕截图清楚地显示了所有内容,每次新插入数据库时,最后一张表都会出现主键错误,正如您所见,没有成功插入任何重复的键和数据。
【问题讨论】:
-
getLastShipOrder是做什么的?如何确定下一个发货订单 ID?? -
该表的shipOrderID来自另一个表,数据来自三个不同的表。
-
这会成为你的主键吗?您能1000% 确定您没有在此处创建重复项吗??
-
这张表的主键来自另一个表的自动生成的主键,每次用户插入数据时都会自动生成一个索引,所以不能重复,我现在插入更多数据并把屏幕截图,所以你可以看到没有重复。我真的很惊讶,因为它只是工作!
标签: asp.net code-behind