2011-11-17 242 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说了什么 –