Технологии
Решено
Проверка на существование записи перед добавлением в базу данных? - вопрос №71337
Здравствуйте, подскажите решение для исключения перед добавлением в базу access дубликатов.
this.backlinksTableAdapter.Adapter.SelectCommand.CommandText = «SELECT Url FROM backlinks WHERE Url LIKE '» + match.Value.ToString() + "%'";
Думал осуществить выборку из базы с помощь оператора LIKE и сделать проверку через количество возвращенных строк из базы, можно реализовать?
Дополнение автора от апрель 7, 2011 г., 10: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();
}
}
тут нужно проверять на дубликат домена, сейчас дуюликаты определяются правильно, но возникла новая проблема в базу добавляется только одна запись
sergei3456 апрель 6, 2011 г.
-
Всего ответов: 2
-
Я думаю, наилучшим решением будет добавление первичного ключа в базу данных. Тогда сама БД будет следить за целостностью (уникальностью кортежей). И не придется делать проверку в коде, просто добавлять: и если уже строка существует, она просто не добавится :)
-
Если Вы хотите доавлять только уникальные адреса, то можно как Вы написали, только использовать Count.
this.backlinksTableAdapter.Adapter.SelectCommand.CommandText = «SELECT Count(Url) FROM backlinks WHERE Url ='» + match.Value.ToString() + "'";
Лучший ответ по мнению автора
Похожие вопросы