我想更新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
也许这是一个简单的问题,但我找不到它。
答案 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
总是这么小的错误-.-