База данных SQlite3, использующая исключение - PullRequest
0 голосов
/ 15 марта 2011

Я использую оболочку SQLITE3 для доступа к базе данных sqlite3, все в порядке, и я закрыл все базы данных, которые я уже открыл, но когда мое приложение завершило выполнение и в то время как execute (возвращает 0;) в основнойЗапрограммируйте следующее увеличение исключения:

Необработанное исключение в 0x75d9b727 в SQLCONVERTOR.exe: Microsoft C ++ исключение: CppSQLite3 Исключение в ячейке памяти 0x0026f8d0 ..

в следующем коде:

void __cdecl exit (
        int code
        )
{
        doexit(code, 0, 0); /* full term, kill process */
}

Я программист на C ++, и я потратил около месяца на решение этой проблемы, но совсем ничего.

Если кто-нибудь знает, что мне делать?как мне думать?Я ценю его / здесь помощь.

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

Проблема заключалась в том, что я смешивал, используя некоторые 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();
0 голосов
/ 15 марта 2011

sqlite3 находится в C, поэтому не генерирует исключения.

На самом деле вы получаете нарушение прав доступа, которое Microsoft превращает в исключение.

Проблема в том, что мы не видим никакихвашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...