2012-03-30 75 views
0

我遇到问题了UPDATING我的数据库使用了FMDB。这里是我的SQL正在编写SQL语句更新查询FMDB

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; 
+0

看到这可能会帮助您:http://stackoverflow.com/a/392536/1126111 – Hector 2012-03-31 04:11:06

回答

7

你或许应该使用此格式:

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

您也正在使用一个提交而不开始一个事务,所以请稍等一下。

+0

即使我添加一个字符串'?',例如性别='男',它不会在数据库中更新。为什么是这样 ?看到这篇文章http://stackoverflow.com/questions/9941967/updating-sqlite-query-fmdb-beginner#comment12704052_9941967 – Illep 2012-03-31 06:29:31

0

试试这个:

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

不,这没有奏效。 – Illep 2012-03-30 10:17:13

4

我用这个:

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]; 
+0

我还收到一个错误/警告,称为“内存不足”。可能是没有问题的SQL和其他一些问题。你知道那个错误是什么意思吗?帮助 – Illep 2012-03-30 10:38:37

+0

确保您已正确输入了列的名称。 – Deviator 2012-03-30 10:51:10

+0

检查,这是正确的 – Illep 2012-03-30 10:56:04

1

试试这个:

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

在FMDB方法[executeUpdate的]用 “?”而不是 “%@”

0

请试试这个:

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