0

我想更新 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

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

4

2 回答 2

0

在不知道 SqlLite3 数据库的表结构的情况下,不可能为您提供 100% 正确的答案,但我怀疑这条线

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

是错误的。事实上,你把小数放在单引号之间,你把表名放在单引号之间,......

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

亲切的问候,PB

于 2013-08-31T10:33:01.400 回答
0

该死,我发现了错误...

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

“)”是错误的!:D

总是这么小的错误-.-

于 2013-08-31T11:38:00.253 回答