Почему я получаю сообщение об ошибке SQLITE_MISUSE: Out of Memory?

Я пишуIOS приложение, которое имеет прямой доступSQLite, Я делал такие вещи много раз наAndroid, так что я'Я изо всех сил пытаюсь увидеть, где моя ошибка лежит - однако мои вставки возвращаютSQLITE_MISUSE ошибка (код 21) с сообщением "недостаточно памяти", Ниже приведены шаги, которые я предпринял, чтобы привести меня к этой вставке.

Во-первых,создание таблицы:

NSString *sql = @"CREATE TABLE IF NOT EXISTS UsersTable (lastName TEXT,id TEXT PRIMARY KEY NOT NULL,picture BLOB,firstName TEXT,age TEXT,email TEXT,sex TEXT,height TEXT,weight TEXT)";

//create the database if it does not yet exist
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: path ] == NO)
{
    const char *dbpath = [path UTF8String];

    //This was if (sqlite3_open(dbpath, &store) == SQLITE_OK) , but it has not made a difference.
    if (sqlite3_open_v2(dbpath, &store, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL) == SQLITE_OK)
    {
        char *errMsg = NULL;
        const char *sql_stmt = [sql UTF8String];

        if (sqlite3_exec(store, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
        {
            NSLog(@"Failed to create table: %s", errMsg);
        }
        if (errMsg)
            sqlite3_free(errMsg);
    }
    else
    {
        NSLog(@"Failed to open/create database");
    }
}

Далеевставить (в настоящее время используется адрес электронной почты для идентификатора пользователя):

INSERT INTO UsersTable (id,lastName,firstName,email) VALUES ("[email protected]","Smith","John","[email protected]")

Я использую один селектор для всех взаимодействий с базой данных, поэтому приведенный выше текст передается здесь:

-(int)execSQL:(NSString *)statement
{
    NSLog(@"%@",statement);

    const char *insert_stmt = [statement UTF8String];
    sqlite3_stmt *stmnt;

    sqlite3_prepare_v2(store, insert_stmt, -1, &stmnt, NULL);
    int result = sqlite3_step(stmnt);

    sqlite3_finalize(stmnt);

    if (result != SQLITE_OK)
    {
        NSLog(@"Error: %s", sqlite3_errmsg(store));//This prints "Error: out of memory"
    }
    return result;
}

Что я делаю неправильно?

Ответы на вопрос(2)

Ваш ответ на вопрос