2012-03-30 77 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];