C # / SQL Проверка на повторяющиеся записи - PullRequest
2 голосов
/ 14 ноября 2011

Я работаю над проектом, и я попал в кирпичную стену. Мой код добавляет даты с типом в базу данных, но мне нужно создать ошибку, когда в коде уже есть похожая запись. Однако я не могу заставить свой цикл проверять наличие дубликатов, и вместо этого он добавляет дубликаты! Я не очень хорош в петлях, поэтому я немного застрял в этом. Любая помощь в поиске дубликатов записей и в том, чтобы не создавать слишком много записей, была бы отличной помощью! Изменил мой код в этой текстовой области, чтобы он не совпадал с именами переменных.

Вот мой код: -

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;
                    }
                }
            }

1 Ответ

2 голосов
/ 14 ноября 2011

Я «довольно» уверен, что вы стараетесь изо всех сил сделать проблему более сложной, чем здесь, но я не могу сказать наверняка, так как я не совсем уверен, что это делает.

Но вот условия, которые должны быть выполнены, чтобы добраться до вашей строки Type-Duplicate Error:

1) Либо DT, либо DF не должны быть пустыми, чтобы пройти первый оператор if

2) Либо IsSelectionValid () должен возвращать false, либо DT или DF должны быть недействительными DateTime.

Ни одна из этих вещей не является дубликатом.

Позвольте мне попытаться объяснить, что я вижу здесь:

Сначала я вижу переменные, называемые DT, DF.Я вижу, что это даты, но это все, что я знаю о них.Я вижу «Тип», который я понимаю даже меньше, чем DT и DF.Я вижу, что вы делаете цикл для Type.Length число итераций ... но что это значит для меня, если я не имею понятия, что такое Type?

Если у вас есть комментарии, объясняющие, чтоесли бы я «мог» вам помочь, но просто недостаточно информации, чтобы знать, что здесь происходит.

Если вы просто хотите знать, как избежать добавления дубликатов в базу данных, я бы предложил добавитьограничение или индекс для столбца в базе данных, а затем вы можете просто перехватывать исключения, которые вызываются при попытке вставить дубликат и обрабатывать его таким образом.В качестве альтернативы, укажите это в своем заявлении на вставку.

...