2012-02-19 11 views
3

何が間違っていますか?これは非常にシンプルな声明だが、それが失敗する原因を把握することができませんでしfmdb executeUpdateが失敗します

FMDatabase *db = [FMDatabase databaseWithPath:appDelegate.databasePath]; 
    [db open]; 
     isSuccess = [db executeUpdate:@"INSERT INTO notes (title, comment, fk) values (?, ?, ?);", title, comment, fkID]; 

exception.name = NSInvalidArgumentException、exception.reason = - [__ NSCFStringコメント]:

注0x68a93fインスタンスに送信され、認識されないセレクター.h

#import <Foundation/Foundation.h> 

@interface Note : NSObject 

@property (strong, nonatomic) NSString *title; 
@property (strong, nonatomic) NSString *comment; 
@property (nonatomic) int fkID; 

答えて

-3

ここに私がやったことがあります。

NSString *sql = [NSString stringWithFormat:@"INSERT INTO notes (title, comment, fkid) values ('%@', '%@', %i)", title, comment, fkid]; 
    isSuccess = [db executeUpdate:sql]; 

正常に動作します。

+6

SQLインジェクション攻撃を要求しています。 –

+3

彼らはこのようにしないように具体的にあなたに指示します。 https://github.com/ccgus/fmdb#data-sanitizationを参照してください。 – mkko

9

FMDB usageをご覧ください。

[db executeUpdate:@"INSERT INTO notes VALUES (?,?,?)", title, comment, [NSNumber numberWithInt:fkID]]; 

-executeUpdate:方法(またはパラメータとしてva_listのを受け入れる変種のいずれか)に提供されるすべての引数はオブジェクトでなければなりません。

+0

私はそれもやってみましたがうまくいきませんでした。 – gangt

関連する問題