SQL更新语句出错

时间:2013-08-31 10:18:39

标签: ios objective-c sqlite

我想更新sql数据库中的内容,但每次它都给我一个错误......

这是我的代码:

// UPDATE SQL
- (void)sqlId:(int)sqlId text:(NSString *)text time:(NSString *)time preis:(NSString *)preis
{
    [self openDb];

    if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {

        NSString *insertSQL = [NSString stringWithFormat:
                               @"UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')",
                               text, [time intValue], preis, sqlId];

        const char *insert_stmt = [insertSQL UTF8String];
        sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);

        if (sqlite3_step(statement) == SQLITE_DONE) {
            NSLog(@"updated");
        } else {
            NSLog(@"Error");
        }

        sqlite3_finalize(statement);
    }

    [self closeDb];

}

控制台说:

2013-08-31 12:07:21.366 Webdesign[6519:a0b] database opened
2013-08-31 12:07:21.367 Webdesign[6519:a0b] Error
2013-08-31 12:07:21.367 Webdesign[6519:a0b] database closed

也许这是一个简单的问题,但我找不到它。

2 个答案:

答案 0 :(得分:0)

在不知道您的SqLite3数据库的表结构的情况下,无法为您提供100%正确答案,但我怀疑该行

UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')

是错误的。实际上,您将小数点放在单引号之间,将表的名称放在单引号之间,......

我倾向于使用NSLog写出创建的语句,并在我的sqlite3命令行工具(或我经常使用的Valentina Studio)中复制/粘贴该语句,以检查创建的语句是否正确。这为我节省了很多时间。

亲切的问候, PB

答案 1 :(得分:0)

DAMN我发现了错误......

@"UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')"

“)”是错误的! :d

总是这么小的错误-.-