2014-03-06 1 views
1

내 Windows 저장소 응용 프로그램에 약간의 문제가 있습니다. 문제는 배경 작업으로 서버에서 데이터를 가져 와서 새로운 데이터를 로컬 데이터베이스에 삽입하는 동시에 사용자가 해당 데이터베이스에서 가져 오는 페이지로 이동할 수 있으며 데이터베이스가 잠긴 상태 인 경우는 드물지만 발생합니다.Windows에서 sqlite 멀티 스레딩 응용 프로그램을 저장

그래서 내가 겪을 수있는 한 가지 방법은 하나의 연결이 다른 하나의 연결이 완료 될 때까지 기다리거나 서로 충돌하지 않도록하는 것입니다.

저는 모든 물건에 대해 SQL 래퍼 클래스로 sqlite-net을 사용하고 있습니다. 어떤 제안?

답변

1

WAL (Write Ahead Logging) 모드를 활성화해야합니다. 동시 읽기 및 쓰기가 가능합니다.

http://www.sqlite.org/wal.html

+1

이 'SQLiteConnectionStringBuilder'는 어디에 있습니까? 오는 유일한 것은'SQLiteConnectionString'입니다. – tyczj

+0

'System.Data.Sqlite' – EkoostikMartin

+0

System.Data가 Windows 스토어 앱에 존재하지 않는 것 같습니다 – tyczj

2

EkoostikMartin 올바른 것입니다. sqlite가 그물을 사용하여, 당신은하고 싶은 것 :

try { 
    db.Execute ("PRAGMA journal_mode = WAL;"); 
} catch (SQLiteException e) { 
    if (e.Result != SQLite3.Result.Row) 
     throw e; 
} 

(확실하지 캐치가 모든 플랫폼에서 필요하지만 journal_mode PRAGMA 행을 반환하기 때문에 WP8에이 나를 ​​위해 필요했다, 그리고 실행하면 전화를 그 시나리오에서 던졌습니다)