编写SQL语句UPDATE查询FMDB

时间:2012-03-30 10:05:28

标签: iphone objective-c fmdb

我使用UPDATING无法FMDB我的数据库。这是我的SQL

BOOL success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name= '%@'",gender,name]];

我想知道我是否通过使用=符号进行比较而犯了错误(如果是这样我怎么能纠正它)。或任何其他解决方案。帮助

编辑:

DB Error 7: out of memory
2012-03-30 16:10:03.341 den[5168:f803] Error calling sqlite3_step (1: SQL logic error or missing database) SQLITE_ERROR
2012-03-30 16:10:03.343 den[5168:f803] DB Query: COMMIT TRANSACTION;

5 个答案:

答案 0 :(得分:8)

您应该使用以下格式:

BOOL success = [db executeUpdate:@"UPDATE Person SET gender = ? WHERE name = ?",gender,name];

你也在没有启动事务的情况下使用提交,所以也要把它拿出来。

答案 1 :(得分:3)

我用过这个:

FMDatabase * database = [self openDB:[DELEGATE getDatabasePath]];
NSString *query = @"";
query = [NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name LIKES '%@'",gender,name];
[database executeUpdate:query];
[database commit];
[database close];

答案 2 :(得分:1)

试试这个:

BOOL success = [db executeUpdate:[NSString 
  stringWithFormat:@"UPDATE Person SET gender=? WHERE name LIKES ?",gender,name]];

在fmdb方法[executeUpdate]中使用“?”而不是“%@”

答案 3 :(得分:0)

试试这个:

BOOL success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name LIKES '%@'",gender,name]];

答案 4 :(得分:0)

请试试这个:

NSString *updateQuery = [NSString stringWithFormat:@"UPDATE YOUR_DATABASE_TABLE_NAME SET row_value = %@",@"fmdb"];
Bool updateSuccess = [FMDataBaseObject ExecuteUpdate:updateQuery];