Написание SQL-оператора ОБНОВЛЕНИЕ запроса FMDB - PullRequest
0 голосов
/ 30 марта 2012

У меня проблемы 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 ]

8 голосов
/ 31 марта 2012

Вам, вероятно, следует использовать этот формат:

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

Вы также используете фиксацию без запуска транзакции, так что уберите и этот бит.

3 голосов
/ 30 марта 2012

Я использовал это:

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];
1 голос
/ 13 марта 2013

попробуйте это:

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

В методе fmdb [executeUpdate] используйте "?"вместо "% @"

0 голосов
/ 24 августа 2015

Пожалуйста, попробуйте это:

NSString *updateQuery = [NSString stringWithFormat:@"UPDATE YOUR_DATABASE_TABLE_NAME SET row_value = %@",@"fmdb"];
Bool updateSuccess = [FMDataBaseObject ExecuteUpdate:updateQuery];
0 голосов
/ 30 марта 2012

Попробуйте это:

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