Проверка на существование записи перед добавлением в базу данных? - вопрос №71337

Здравствуйте, подскажите решение для исключения перед добавлением в базу access дубликатов.

this.backlinksTableAdapter.Adapter.SelectCommand.CommandText = «SELECT Url FROM backlinks WHERE Url LIKE '» + match.Value.ToString() + "%'";

Думал осуществить выборку из базы с помощь оператора LIKE и сделать проверку через количество возвращенных строк из базы, можно реализовать?



Дополнение автора от 07.04.11 11:31:25

Дело в том что я выбираю значения через regex.match

string parent = @«http://(([a-z\d][-a-z\d]*[a-z\d]\.)*[a-z][-a-z\d]+[a-z]\.[a-z]*)\/»;

foreach( XElement e in like )
{
Regex reg = new Regex(parent);
Match match = reg.Match(e.Value);

this.backlinksTableAdapter.Adapter.SelectCommand.CommandText = «SELECT Url FROM backlinks WHERE Url LIKE '» + match.Value.ToString() + "%'";

if (this.backlinksTableAdapter.Fill(seobacklinksDataSet.backlinks)>0)
{
//MessageBox.Show(«Запись уже есть в базе!!!»);
}
else
{
this.backlinksTableAdapter.Insert(e.Value, "", "", query);
this.seobacklinksDataSet.AcceptChanges();
}

}

тут нужно проверять на дубликат домена, сейчас дуюликаты определяются правильно, но возникла новая проблема в базу добавляется только одна запись

06.04.11
2 ответа

Лучший ответ по мнению автора

Если Вы хотите доавлять только уникальные адреса, то можно как Вы написали, только использовать Count.

this.backlinksTableAdapter.Adapter.SelectCommand.CommandText = «SELECT Count(Url) FROM backlinks WHERE Url ='» + match.Value.ToString() + "'";

07.04.11
Лучший ответ по мнению автора

Другие ответы

Я думаю, наилучшим решением будет добавление первичного ключа в базу данных. Тогда сама БД будет следить за целостностью (уникальностью кортежей). И не придется делать проверку в коде, просто добавлять: и если уже строка существует, она просто не добавится :)

07.04.11
Посмотреть всех экспертов из раздела Технологии > .Net/C#
Пользуйтесь нашим приложением Доступно на Google Play Загрузите в App Store