iOS 6:使用文本数据更新sqlite表时出错

时间:2013-04-08 17:29:06

标签: iphone ios sqlite

我正在尝试更新sqlite数据库中的表。更新int时我没有遇到任何麻烦,但现在我插入(更新)了一个文本。

-(void)updateItemMemo:(NSString*)text itemID:(int)itemID
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:user_data];
sqlite3* database = NULL;
sqlite3_stmt *statement;
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK)
{
    const char *sqlItems=sqlite3_mprintf("UPDATE itemStatus\
                                         SET memo=?\
                                         where refID=?",text,itemID);
    if(sqlite3_prepare_v2(database, sqlItems, -1, &statement, NULL) != SQLITE_OK)

        sqlite3_bind_text(statement, 1, [text UTF8String], -1, SQLITE_TRANSIENT);
        sqlite3_bind_int(statement, 2, itemID);

    char* errmsg;
    sqlite3_exec(database, "sqlItems", NULL, NULL, &errmsg);
    sqlite3_free((char*)errmsg);

    if(SQLITE_DONE != sqlite3_step(statement))
        sqlite3_finalize(statement);
    sqlite3_free((char*)sqlItems);
    sqlite3_close(database);
}
else
{
    NSLog(@"%s: prepare failed: %s", __FUNCTION__, sqlite3_errmsg(database));
}

}

查询是正确的:在SQLiteStudio中检查用文本和真实id交换参数。有用。问题是该方法不能用于某些神秘的原因。它也不会返回任何错误。请帮忙。

1 个答案:

答案 0 :(得分:0)

好吧,解决了。原因是“text”这个词作为参数。只需将其改为“memoContext”,就像魅力一样。