2014-09-10 5 views
1

SQLite 및 .Net 4.5, Winforms를 사용하고 있습니다.SQLite 및 다중 스레드

하나의 열과 여러 스레드가 동시에 실행되는 단일 테이블이 있습니다. 첫 번째 스레드가 첫 번째 행의 값을 읽은 다음 삭제하고 다음 스레드가 다시 다른 첫 번째 값을 읽고 삭제해야합니다. 어떻게 이것을 수행합니까?

지금 어떤 일이 일어나는지 설명해 드리겠습니다. "

는 알버트가

나는 세 개의 스레드 내 응용 프로그램을 실행, 첫 번째 읽기

밥 : 나는이 값을 사용하여 테이블의 하나 개의 컬럼"이름 "을 가지고 말할 수 John ", 두 번째 것은"John ", 세 번째 것은"John "입니다. 그 후 "John"행이 삭제됩니다.

첫 번째 스레드가 "John"을 읽고 행을 삭제하고 두 번째 스레드가 "Bob"을 읽고 행을 삭제하고 세 번째 스레드가 "Albert"를 읽고 삭제하도록합니다.

자세한 정보 :

각 스레드는 데이터베이스에 대한 자체 연결을 엽니 다.

각 스레드의 값을 판독하고 동일한 연결을 사용하는 행을 삭제하는 방법과 동일한 방법을 사용하는 방법의 의사 코드 :

열린 연결

삭제 값을 읽어 행

밀접한 관계

나는 실제 코드를 게시 할 수 있습니다,하지만 난 문제가 내 코드에서 생각하지 않습니다. 스레드가 스레드를 읽고 삭제할 때 "잠금"하는 방법을 찾고 있지만이를 수행하는 방법을 찾지 못하는 것 같습니다.

도움을 주시면 대단히 감사하겠습니다.

답변

2

그냥 transactions를 사용

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

이 마법처럼 일했다! 고맙습니다 –