【问题标题】:C#/SQL Checking for duplicate entriesC#/SQL 检查重复条目
【发布时间】:2011-11-14 19:43:57
【问题描述】:

我正在做一个项目,但我碰了壁。我的代码将带有类型的日期添加到数据库中,但是当代码中已经有类似的条目时,我需要创建一个错误。但是,我无法让我的循环检查重复项,而是添加重复项!我不太擅长循环,所以我有点卡在这个问题上。检查重复条目并阻止其创建过多条目的任何帮助将是一个很大的帮助!更改了我在此文本区域中的代码,因此它的变量名称不完全相同。

这是我的代码:-

if (DT != null && DT.Length > 0 || DF != null && DF.Length > 0)
            {
                for (int t = 0; t < Type.Length; t++)
                {
                    DateTime checkDate;

                    if (Type.IsSelectionValid(8, out typeError) && DateTime.TryParse(DF, out typeError) && DateTime.TryParse(DT, out checkDate))
                    {
                            TypeValid = true;
                            error.Error = false;
                        }
                        else
                        {
                            error.Errors = "Type-Invalid";
                            absenceTypeValid = false;
                            break;
                        }
                    }
                    else
                    {
                        error.Errors = "Type-Duplicate";
                        TypeValid = false;
                        break;
                    }
                }
            }

【问题讨论】:

  • 不,不是。我不明白为什么我的循环会创建重复项,我需要它来阻止用户添加重复项。感谢您尝试提供帮助。
  • 我在您发布的代码中没有看到任何重复检查,您能否添加 cmets 或在您的问题中解释重复检查(不起作用)代码在哪里?
  • 它在 (dF.Date) if 循环部分添加重复项。我现在已经删除了这部分,我会看看会发生什么。但是,我需要它来检查重复项,如果是这样,我希望它不发布任何内容。但我不确定要在我的代码中添加什么来做到这一点。
  • 你能贴出Type的代码吗,如果不是整个班级,你能不能只贴Type.IsSelectionValid

标签: c# duplicates


【解决方案1】:

我“相当”确定你会竭尽全力让问题变得比这里更困难,但我不能肯定地说,因为我不完全确定这是做什么的。

但以下是到达您的 Type-Duplicate Error 行需要满足的条件:

1) DT 或 DF 必须不为空才能通过第一个 if 语句

2) IsSelectionValid() 必须返回 false,或者 DT 或 DF 必须是无效的 DateTime。

这些东西都不构成重复。

让我试着解释一下我在这里看到的内容:

我首先看到了名为 DT、DF 的变量。我可以看到这些是日期,但这就是我对它们的全部了解。我看到了比 DT 和 DF 更了解的“类型”。我看到您正在为 Type.Length 迭代次数进行循环...但是如果我不知道 Type 是什么,这对我意味着什么?

如果你有 cmets 解释什么是我“可能”能够帮助你,但真的没有足够的信息来知道这里发生了什么。

如果您只是想知道如何避免向数据库添加重复项,那么我建议向数据库中的列添加约束或索引,然后您可以捕获尝试插入时抛出的异常复制并以这种方式处理它。或者,在您的插入语句中说明它。

【讨论】:

  • 我现在知道是什么导致了重复,我已经摆脱了这个。我将相应地更新我的帖子。我现在要做的是确保我的代码检查重复项并且不会将它们发布到数据库中。
  • 您的代码不太合理。您有一个递增变量 t 的循环,但 t 从未在您的循环中使用过……每次都一样。其次,我没有看到任何将数据插入数据库的代码。当您看不到 db 表中已有的内容时,如何知道这里是否存在欺骗?该检查必须是您的 sql 查询的一部分,或者是您用来连接数据库的任何框架的命令的一部分,对吧?
  • 它确实添加到我的数据库中,如果它更容易,我如何创建一个循环来检查某人是否没有添加两次?还有更多代码,但我只是放了循环部分,因为这是我卡住的部分。
  • @BrandonMoore 正是我的想法,但我想先看看Type.IsSelectionValid 里面是什么
  • @kellehbeans 假设您的程序只有一项要添加到数据库中,但该项目已经在数据库中。这将如何帮助您抓住它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2014-08-25
  • 1970-01-01
  • 2012-12-06
  • 2014-06-27
  • 2010-09-16
  • 2016-09-06
相关资源
最近更新 更多