编写SQL语句UPDATE查询FMDB
Posted
技术标签:
【中文标题】编写SQL语句UPDATE查询FMDB【英文标题】:Writing SQL statement UPDATE query FMDB 【发布时间】:2012-03-30 10:05:28 【问题描述】:我在使用FMDB
的数据库时遇到问题UPDATING
。这是我的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;
【问题讨论】:
看看这可能对你有帮助:***.com/a/392536/1126111 【参考方案1】:你应该使用这种格式:
BOOL success = [db executeUpdate:@"UPDATE Person SET gender = ? WHERE name = ?",gender,name];
你也在使用提交而不启动事务,所以也去掉那个部分。
【讨论】:
即使我将字符串添加到?
,例如性别 = '男性',它也不会在数据库中更新。为什么是这样 ?看到这个帖子***.com/questions/9941967/…【参考方案2】:
我用过这个:
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];
【讨论】:
我还收到一个名为Out of memory
的错误/警告。可能是SQL没有问题和其他一些问题。你知道那个错误是什么意思吗?帮助【参考方案3】:
试试这个:
BOOL success = [db executeUpdate:[NSString
stringWithFormat:@"UPDATE Person SET gender=? WHERE name LIKES ?",gender,name]];
在 fmdb 方法 [executeUpdate] 中使用“?”而不是“%@”
【讨论】:
【参考方案4】:试试这个:
BOOL success = [db executeUpdate:[NSString stringWithFormat:@"UPDATE Person SET gender= '%@' WHERE name LIKES '%@'",gender,name]];
【讨论】:
【参考方案5】:请试试这个:
NSString *updateQuery = [NSString stringWithFormat:@"UPDATE YOUR_DATABASE_TABLE_NAME SET row_value = %@",@"fmdb"];
Bool updateSuccess = [FMDataBaseObject ExecuteUpdate:updateQuery];
【讨论】:
以上是关于编写SQL语句UPDATE查询FMDB的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Update 语句添加到我将要插入到带有 MS SQL 查询的表中的选定行中?