初学者在这里试验。我编写了一个小代码片段,用于将数据从txt文件输入到数据库中。正如问题所述,我想写一个if语句(我认为),检查重复项,如果有重复,则阻止数据输入。或者,如果值存在,那么donotprocess();就是那种程度。
我在开始时遇到一些麻烦,所以如果有人能提供一些见解或指出我正确的方向,我会非常感激。
public bool UpdateOrderTrackingNumber(string tracking)
{
trackingNumber = tracking;
string statement = "INSERT INTO SOP10107 VALUES(@SOPNUMBE, @SOPTYPE, @Tracking_Number);";
SqlCommand comm = new SqlCommand(statement, connectionPCI);
comm.Parameters.AddWithValue("SOPNUMBE", orderNumber);
comm.Parameters.AddWithValue("SOPTYPE", soptype);
comm.Parameters.AddWithValue("Tracking_Number", tracking);
try
{
comm.Connection.Open();
comm.ExecuteNonQuery();
comm.Connection.Close();
}
catch (Exception e)
{
comm.Connection.Close();
KaplanFTP.errorMsg = "Database error: " + e.Message;
}
return true;
}
答案 0 :(得分:1)
如果您不能拥有重复的行,那么您可以将这三个字段作为主键。是否要依赖于对该表的含义的理解。
Sop Number总是唯一吗?或者不同的Sop类型可以使用相同数量的Sops吗? 这是Sop和跟踪之间的连接,还是跟踪Sop的属性? Sop可以有很多追踪吗?这个表真正代表什么?
如果设置主键,则数据库将阻止您的代码插入重复项。这是一个非常可靠的防御,但你的代码应该更加友好,并试图阻止它发生,而不是失败的“重复密钥”例外。
编辑:查看您的方法名称 - 您的对象似乎是“Sop”,而Tracking是其属性。该方法称为“更新”,因此我们可以假设或要求Sop已存在吗?在这种情况下,它只是一个更新声明。你会多久和以什么模式称呼这些方法?你会创建Sops然后绕过更新他们的跟踪号吗?您是否总是每次都使用追踪号码创建完整的?
您可能会发现对象关系映射框架很有用。在学习曲线方面,这是一个更大的飞跃,但它可以使事情更容易编程和理解。