2011-11-17 241 views
0

我有一個應用程序,用於顯示數據庫中的數據。實際上,我們可以說它是一個數據庫編輯器。C++中的SQLite數據庫更新

現在我想對這個打開的數據庫執行更新/刪除命令。使用以下命令,數據庫成功打開。

int nRet = sqlite3_open(szFile, &mpDB); 

從C#(.NET API)我能夠從數據庫中更新數據

dbCmd5 = New SQLiteCommand(
     "update Tbl_Tmp_Cal_Res Load_Time=5 WHERE Part_Index= 5", g_dbFlow); 
dbCmd5.ExecuteNonQuery() 

但是從C++我得到錯誤5(數據庫被鎖定)

C++代碼

int nRet = sqlite3_open(szFile, &mpDB);//database opened successfully. 
sqlite3_exec(mpDB, "UPDATE query", 0, 0, &szError);//Error for this statement 

多線程不在應用程序中使用。

+0

是否有另一個程序同時使用數據庫? –

+0

沒有其他程序正在使用它。它工作正常C# – Sandip

+0

什麼是錯誤(szError變量)? – INS

回答

1

是從代碼中的另一個位置使用的數據庫?因爲別的東西顯然已經鎖定了數據庫,所以我猜想你是從代碼中的另一個位置使用數據庫,並忘記在select語句或類似的東西上調用sqlite3_finalize。

-2

也許你已經忘記了證實步(用戶名/密碼&等)

+1

沒有認證 – Sandip

+2

-1,因爲SQLite不是傳統的RDBMS,它沒有用戶,密碼,ROLE,GRANT或REVOKE的概念。 – Benoit

+0

-1因爲@Benoit說了什麼 –