2014-09-10 49 views
1

我正在使用SQLite和.Net 4.5,WinformsSQLite和多線程

我有一個表只有一列和多個線程同時運行。我希望第一個線程從第一行讀取值,然後刪除它,然後下一個線程應該再次讀取現在不同的第一個值並刪除它,等等......我如何實現這一目標?

讓我試着描述一下現在發生的事情。可以說我有表中的一個單獨列「名稱」使用這些值:

約翰

鮑勃

阿爾伯特

當我與三個線程運行我的應用程序,第一個讀取「約翰「,第二個讀」約翰「,第三個讀」約翰「。之後,「John」行被刪除。

我想讓第一個線程讀取「John」並刪除該行,第二個線程讀取「Bob」並刪除該行,第三個線程讀取「Albert」並將其刪除。

更多信息:

每個線程打開自己的連接到數據庫。

每個線程使用相同的方法來讀出的值,然後刪除使用相同的連接的行,該方法的僞代碼是:

開放連接

讀取的值

刪除排

緊密結合

我可以張貼實際的代碼,但我不認爲這個問題是在我的代碼。我正在尋找一種方式來在線程正在讀取和刪除線程時「鎖定」表,但似乎無法找到一種方法。

任何幫助,非常感謝。

回答

2

只需使用transactions

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

工作就像一個魅力!謝謝 – 2014-09-10 10:42:14