Я делаю проект на RFID-ридере с использованием SQL Server, Visual Studio, C #. У меня есть база данных с именем rfid
с тремя таблицами table1, table2 и table3.
table1
заполнен сведениями о фиксированных тегах, и эти записи не будут изменены. Каждый тег rfid
имеет идентичный код, вызывающий номер EPC, и мы можем идентифицировать их с ним.
Table3
заполняется записями тега, которые считываются считывателем RFID. Единственное изменение между table1 и table3 - это то, что table1 - фиксированная таблица, и мы дали эти записи раньше. Но таблица 3 всегда заполняется операцией чтения считывателя. Затем заполнение занимает несколько секунд.
Table2
заполняется записями разностей в таблицах 1 и 3, когда они сравниваются. Я попробовал обычный метод сравнения таблиц и записал записи в таблицу2, но проблема в том, что записи повторяются в таблице2, потому что читатель постоянно читает теги. Я хочу остановить это. И еще одна вещь: поскольку заполнение таблицы 3 занимает несколько секунд, в качестве разницы отображаются неправильные теги.
В качестве примера я попробовал обычный метод сравнения таблиц и перенес записи в таблицу2, но проблема в том, что записи повторяются в таблице2, потому что читатель постоянно читает теги. Я хочу остановить это. И еще одна вещь: поскольку заполнение таблицы 3 занимает несколько секунд, в качестве разницы отображаются неправильные теги. В качестве примера. Допустим, в таблице 10 записей. И мы даем те же 8 тегов для чтения, в том числе и в table2. Так что теперь я ожидаю только две записи разницы тегов в таблице 2 в соответствии с моим кодом. Но есть более двух записей. Причина в том, что table3 заполняет один за другим или не так, как все 8 тегов одновременно. Затем, как только деталь тега попадает в таблицу3, начинается сравнение. Тогда он принимает разницу как остальные девять тегов.
Теперь я хочу остановить эти два прерывающих сценария.
con = new SqlConnection(Constants.ConnectionString);
con.Open();
SqlCommand comp = new SqlCommand("INSERT INTO table2 (EPC, identificationcount, RSSI) SELECT EPC, identificationcount, RSSI FROM table1 WHERE NOT EXISTS (SELECT 1 FROM table3 WHERE table1.EPC = table3.EPC)", con);
comp.ExecuteNonQuery();
con.Close();