2011-11-15 45 views
-1
int nRet = sqlite3_open(szFile, &mpDB); 

if (nRet != SQLITE_OK) 
{ 

} 

setBusyTimeout(mnBusyTimeoutMs); 

    sqlite3_exec(mpDB, "Begin Transaction;", 0, 0, &szError); 
    sqlite3_exec(mpDB, "UPDATE query", 0, 0, &szError);//some update table query 
sqlite3_exec(mpDB, "Commit Transaction;", 0, 0, &szError);///Here it gives error database is locked 

上面的代碼適用於插入命令而不是更新命令。SQLITE:當使用更新查詢時,數據庫被鎖定錯誤(錯誤-5)

+0

您是否涉及多個線程? –

+0

沒有多線程 – Sandip

+0

我希望「更新查詢」不是你真正的sql語句 –

回答

3

你有沒有在某個sql編輯器中打開該文件,在同一時間?我最近使用了一個名爲「SQLite數據庫瀏覽器」的程序,它鎖定了我的整個sqlite數據庫,花了我一些時間來了解到底是怎麼回事。

+0

在SQLite編輯器中沒有打開文件 – Sandip

+0

@ sandip123:文件旁邊是否有「-journal」文件?也許之前出錯了,它鎖定了數據庫,請嘗試刪除這些文件。 –

+0

數據庫文件夾中沒有.journal文件。我想知道它是如何工作的插入命令,而不是更新 – Sandip