语言

Menu
Sites
Language
Database E_OBJECT_LOCKED after QueryN

Is it bug or feature?

When I try to  ExecuteSql (DROP TABLE) after using DBEnumerator I catch E_OBJECT_LOCKED.

If I remove  rs->MoveFirst() - the code above works fine





DbEnumerator* rs;
rs = pDatabase->QueryN(L"SELECT count(*) FROM tbl");

if (rs)
{
rs->Reset();
if (rs->MoveFirst() == E_SUCCESS)// If remove this line - everything OK
{
// 
}
}

AppLog("DROP1");
r = pDatabase->ExecuteSql(L"DROP TABLE IF EXISTS tbl", true);//Error - object locked
if (IsFailed(r)) { AppLog("Error drop table r=%d %s",r,GetErrorMessage(r)); Close(); return r; }
r = pDatabase->ExecuteSql(L"CREATE TABLE IF NOT EXISTS tbl (fid INTEGER PRIMARY KEY AUTOINCREMENT, fx DOUBLE, fy DOUBLE);", true);
if (IsFailed(r)) { AppLog("Error CREATE TABLE r=%d",r); Close(); return r; }

AppLog("DROP2");// the same
r = pDatabase->ExecuteSql(L"DROP TABLE IF EXISTS tbl", true);
if (IsFailed(r)) { AppLog("Error drop table r=%d %s",r,GetErrorMessage(r)); Close(); return r; }
r = pDatabase->ExecuteSql(L"CREATE TABLE IF NOT EXISTS tbl (fid INTEGER PRIMARY KEY AUTOINCREMENT, fx DOUBLE, fy DOUBLE);", true);
if (IsFailed(r)) { AppLog("Error CREATE TABLE r=%d",r); Close(); return r; }

编辑者为: Vitaly 30 3月, 2014
查看选择的答案

响应

1 回复
Mark as answer
Vitaly

Find bug...

Need delete rs;