我正在使用SQLite和.Net 4.5,Winforms
我有一个只有一列的表,同时有几个线程在运行。我希望第一个线程从第一行读取值,然后删除它,然后下一个线程应该再次读取现在不同的第一个值并删除它,依此类推......我该如何实现?
让我试着描述现在发生的事情。让我们说我有一个专栏" Names"在具有这些值的表中:
约翰
鲍勃
阿尔伯特
当我用三个线程运行我的应用程序时,第一个读取" John,"第二个读" John,"第三个读"约翰。"在那之后," John"行已删除。
我希望第一个帖子能够阅读" John"并删除行,第二个线程要读取" Bob"并删除行,第三个线程阅读" Albert"并删除它。
更多信息:
每个线程都会打开自己与数据库的连接。
每个线程使用相同的方法读取值,然后使用相同的连接删除行,方法的伪代码是:
打开连接
读取值
删除行
关闭连接
我可以发布实际代码,但我不认为问题出在我的代码中。我正在寻找一种方法来锁定"线程正在读取和删除线程时的表,但似乎无法找到一种方法。
非常感谢任何帮助。
答案 0 :(得分:2)
只需使用transactions:
BEGIN;
SELECT Name FROM MyTable LIMIT 1;
DELETE FROM MyTable WHERE Name = :WhatIveJustRead;
COMMIT;