如果存在价值;不要输入值。如果声明

时间:2011-10-18 14:26:24

标签: c# asp.net mysql sql if-statement

初学者在这里试验。我编写了一个小代码片段,用于将数据从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;
}

1 个答案:

答案 0 :(得分:1)

如果您不能拥有重复的行,那么您可以将这三个字段作为主键。是否要依赖于对该表的含义的理解。

Sop Number总是唯一吗?或者不同的Sop类型可以使用相同数量的Sops吗? 这是Sop和跟踪之间的连接,还是跟踪Sop的属性? Sop可以有很多追踪吗?这个表真正代表什么?

如果设置主键,则数据库将阻止您的代码插入重复项。这是一个非常可靠的防御,但你的代码应该更加友好,并试图阻止它发生,而不是失败的“重复密钥”例外。

编辑:查看您的方法名称 - 您的对象似乎是“Sop”,而Tracking是其属性。该方法称为“更新”,因此我们可以假设或要求Sop已存在吗?在这种情况下,它只是一个更新声明。你会多久和以什么模式称呼这些方法?你会创建Sops然后绕过更新他们的跟踪号吗?您是否总是每次都使用追踪号码创建完整的?

您可能会发现对象关系映射框架很有用。在学习曲线方面,这是一个更大的飞跃,但它可以使事情更容易编程和理解。