Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SQL update语句出错_Ios_Objective C_Sqlite - Fatal编程技术网

Ios SQL update语句出错

Ios SQL update语句出错,ios,objective-c,sqlite,Ios,Objective C,Sqlite,我想更新sql数据库中的某些内容,但每次它都给我一个错误 @"UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')" 这是我的代码: // UPDATE SQL - (void)sqlId:(int)sqlId text:(NSString *)text time:(NSString *)time preis:(NSString *)preis { [self openDb]; if (s

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

@"UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')"
这是我的代码:

// 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

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

如果不知道SqLite3数据库的表结构,就不可能为您提供100%正确的答案,但我怀疑这一行

UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')
错误的。事实上,你把小数放在单引号之间,把表名放在单引号之间

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

亲切问候,,
PB

该死,我发现了错误

@"UPDATE `webdesign` SET data='%@', time='%d', preis='%@' WHERE id='%d')"
这个“)”是个错误D


总是这样一个小错误-.-

您忘记创建
sqlite3\u stmt*语句=NULL检查
sqlite3\u prepare\u v2的返回值
。当任何函数失败时,调用。