【问题标题】:If values exist; Do not input values. if statement如果值存在;不要输入值。 if 语句
【发布时间】:2011-10-18 14:26:24
【问题描述】:

初学者在这里做实验。我编写了一个小代码 sn-p 将数据从 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;
}

【问题讨论】:

  • 看看下面的问题:> stackoverflow.com/questions/1218905/…
  • 在这种情况下,您应该将问题标记为重复,而不是发布带有原始链接的答案
  • 我不太确定这是否是我想要做的。如果存在真的不需要更新吗?
  • 我有点难以理解您的问题。您能否澄清一下何时要更新以及何时要插入?当然,您只能更新已存在的项目,并插入不存在的项目。那是你想做的吗?我从您的文字中了解到您并不想更新,您只想插入(但忽略/丢弃重复项,即已插入的项目)。
  • 现在,我的代码将项目插入到数据库中,无论它们是否存在。我想做的是插入当前不存在的项目,如果它们确实存在,请不要更新。希望这会有所帮助..

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


【解决方案1】:

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

Sop Number 总是唯一的吗?或者不同的 Sop 类型可以有相同编号的 Sop? 这是 Sop 和 Tracking 之间的连接,还是 Tracking 是 Sop 的属性?一个 Sop 可以有多个 Tracking 吗?这张表的真正含义是什么?

如果您设置了主键,那么数据库将阻止您的代码插入重复项。这是一个非常可靠的防御措施,但您的代码应该更友好一些,并尽量防止它发生,而不是因为“重复键”异常而失败。

编辑:查看您的方法名称 - 您的对象似乎是“Sop”,而 Tracking 是它的一个属性。该方法称为“更新”,那么我们可以假设或要求 Sop 已经存在吗?在这种情况下,它只是一个更新语句。您将调用这些方法的频率和模式是多少?你会创建 Sops,然后到处更新他们的跟踪号吗?您每次都会创建完整的跟踪号吗?

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多