私はFMDBを使用してSQLiteデータベースとインターフェイスしています。私は行を正常に挿入することがありますが、私は試して、それらの1つを更新すると、UPDATEは発生しませんが、エラーは報告されません。UPDATEはFMDBで動作せず、sqliteコマンドラインでうまく動作します
は、ここで私がやっているものです:
userHistoryDB.logsErrors = YES;
userHistoryDB.traceExecution = YES;
NSString *query = [NSString stringWithFormat:
@"INSERT OR IGNORE INTO phrase_history (code, %@) VALUES (\"%@\", 0); "
@"UPDATE OR FAIL phrase_history SET %@ = %@ + 1 WHERE code = \"%@\";",
countTypeColumn,
phraseCode,
countTypeColumn,
countTypeColumn,
phraseCode];
BOOL rc = [userHistoryDB executeUpdate:query];
RCは何も間違ってないことを示すために、YESです。ここに例があります:
<FMDatabase: 0x5303af0> executeUpdate: INSERT OR IGNORE INTO phrase_history (code, presented) VALUES ("grapefruit", 0); UPDATE OR FAIL phrase_history SET presented = presented + 1 WHERE code = "grapefruit";
FMDBに関する限り、これは問題なく実行されています。ただし、レコードは増加しません。 SQLには何も問題はありません。sqlite3コマンドラインツールに貼り付けると、完全に動作します。
なぜそれが実行されていないかに関するアイデアはありますか?
- を(すでに手動で挿入エントリで)だけで更新を実行するexecuteQuery
- を使用して、実行中のトランザクションで
- を行を囲む:私は無駄にしようとしているもの。
- スラミングヘッドを机に押し付ける。
私はこれが当てはまるとは思わない。私はちょうどUPDATEを実行しようとしました(エントリはすでにそこにあります)、私は同じ結果を得ます。また、他の複数行のSQLクエリでもFMDBは問題ありません。 –
私はそれを後退させる、あなたは完全に正しい。私はこれを試してみたと思ったが、明らかにいくつかの性行為の叫び声が入ってきた。ありがとう、恩恵を楽しむ! –
@coob賞金を割り当てるだけでなく、回答を受け入れる必要があることを忘れたり、紛失したりすることを忘れないでください。 –