Проблема заключалась в том, что я смешивал, используя некоторые API из интерфейса C и некоторые функции из CPPSqlite3 Wrapper. По сути, использование API sqlite3_close отличается от функции close в оболочке, оболочка устанавливает указатель DB на ноль, а sqlite3_closeдоза не делать, и поэтому вы должны сделать это вручную.
Другими словами: параметр C для sqlite3_close (C) должен быть либо указателем NULL, либо указателем объекта sqlite3, полученным из sqlite3_open (), sqlite3_open16 ()или sqlite3_open_v2 () и ранее не закрывался.Вызов sqlite3_close () с аргументом указателя NULL является безвредным запретом.
моя ошибка была:
while( (pStmt = sqlite3_next_stmt(NewDB.mpDB, 0))!=0 )
{
sqlite3_finalize(pStmt);
}
sqlite3_close (NewDB.mpDB);
в то время как это должно быть:
while( (pStmt = sqlite3_next_stmt(NewDB.mpDB, 0))!=0 )
{
sqlite3_finalize(pStmt);
}
NewDB.close();