У меня есть список, содержащий значения, которые нужно добавить в таблицу, и для которых я закодировал все необходимые требования, но мне нужно, чтобы значения добавлялись ТОЛЬКО, если они уже не существуют в таблице.
Вступительное выражение:
public static void InjectNewWords(List<string> newWords)
{
string conString = "Data Source=.;Initial Catalog=QABase;Integrated Security=True";
List<string> distinctWords = newWords.Distinct().ToList();
using (SqlConnection connection = new SqlConnection(conString))
{
connection.Open();
string sqlIns = "insert into NewWords(WordList) values (@WordList)";
SqlCommand command = new SqlCommand(sqlIns, connection);
command.Parameters.Add("@WordList", SqlDbType.Text);
try
{
foreach (string word in distinctWords)
{
command.Parameters["@WordList"].Value = word;
command.ExecuteNonQuery();
}
}
catch(Exception ee)
{
Console.WriteLine(ee.ToString());
}
try
{
Int32 rowsAffected = command.ExecuteNonQuery();
//Console.WriteLine("RowsAffected: {0}", rowsAffected);
//("Rows Affected: " + rowsAffected);
connection.Close();
newWords.Clear();
distinctWords.Clear();
}
Какие изменения я должен внести, чтобы это сделать, ребята? :) Благодарю!
возможно, просто добавьте where
к insert
? (и уникальный индекс для хорошей оценки и эффективности оценки):
where not exists (select 1 from NewWords where WordList = @WordList)
если вы сохранили список имен в другой таблице, вы можете использовать этот запрос
insert into tbl_name
select * from tbl_name
where col_name not in(
select * from ano_tbl_name
);