Вернуть вставленный идентификатор после sqlite3_finalize - PullRequest
0 голосов
/ 30 апреля 2011

Вот код, который я использую для вставки записи в таблицу ... все, что мне нужно, это эта функция для захвата и возврата вставленного идентификатора записи ... это возможно?Этот код работает нормально и возвращает YES для успешной вставки и NO для сбоев ... но теперь я пытаюсь вернуть целочисленный идентификатор вставки ... но не могу найти способ ...

-(BOOL)insertEvent:(Event *)objEvent { Utils *objUtils = [[Utils alloc] init];

sqlite3_stmt *insertStmt = nil;
sqlite3 *aDatabase = nil;

int ret = sqlite3_enable_shared_cache(1);

if (sqlite3_open([databasePath UTF8String], &aDatabase) == SQLITE_OK)
{
    if(insertStmt == nil)
    {           
        NSString *aString = [NSString stringWithFormat:@"INSERT INTO tblEvent ('eventstartdate','eventdescription') VALUES ('%@','%@')",objEvent.eventstartdate, objEvent.eventdescription];
        const char *sql = [aString UTF8String];
        if(sqlite3_prepare_v2(aDatabase, sql, -1, &insertStmt, NULL) != SQLITE_OK)
        {
            NSAssert1(0, @"Error while creating insertTip add statement. '%s'", sqlite3_errmsg(aDatabase));
            return NO;
        }
        [objUtils release];
    }

    if(SQLITE_DONE != sqlite3_step(insertStmt)) {
        NSAssert1(0, @"Error while inserting into TipsTracker. '%s'", sqlite3_errmsg(aDatabase));
        return NO;
    }
    sqlite3_reset(insertStmt);

    if (insertStmt)
    {
        sqlite3_finalize(insertStmt);
        insertStmt = nil;
    }
}
sqlite3_close(aDatabase);
aDatabase = nil;
return YES;}

1 Ответ

0 голосов
/ 30 апреля 2011

попробуйте эту функцию sqlite3_last_insert_rowid(database);

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