编写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的主要内容,如果未能解决你的问题,请参考以下文章

Access中UPDATE语句一次更新多个数据

如何将 Update 语句添加到我将要插入到带有 MS SQL 查询的表中的选定行中?

SQL语句UPDATE 多表关联的

带有 WHERE EXISTS 的 SQL UPDATE 语句

SQL 语句 UPDATE带嵌套子查询的问题

多表关联UPDATE语句怎么写呀?