2014-09-10 3 views
1

Я использую SQLite и .NET 4.5, WinformsSQLite и несколько потоков

У меня есть одна таблица с только один столбец и несколько потоков работает одновременно. Я хочу, чтобы первый поток прочитал значение из первой строки, а затем удалил его, затем следующий поток снова должен прочитать первое значение, которое теперь отличается, и удалить его и т. Д. Как мне это достичь?

Позвольте мне попытаться описать, что происходит сейчас. Допустим, у меня есть один единственный столбец «Имена» в таблице с этими значениями:

Джон

Боб

Альберт

Когда я запускаю мое приложение с тремя потоками, первый один читает " Джон », второй читает« Джон », а третий читает« Джон ». После этого строка «Джон» удаляется.

Я хочу, чтобы первый поток читал «Джон» и удалял строку, второй поток читал «Боб» и удалял строку, третий поток читал «Альберт» и удалял ее.

Подробнее:

Каждый поток открывает свое собственное подключение к базе данных.

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

открытое соединение

считывать значение

удалить ряд

тесная связь

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

Любая помощь очень ценится.

ответ

2

Просто используйте transactions:

BEGIN; 
SELECT Name FROM MyTable LIMIT 1; 
DELETE FROM MyTable WHERE Name = :WhatIveJustRead; 
COMMIT; 
+0

Работал как шарм! спасибо –

Смежные вопросы