iOSでFMDBを使用していて、次のようなステートメントでテーブルをクエリしようとしています。
select * from test where foo isNull
sqlite C APIでは、これはこのAPIを使用してnullにバインドすることになります。
int sqlite3_bind_null(sqlite3_stmt*, int);
これは機能していません。列をnullに正しくバインドしているように見えるfmdbを介して呼び出された選択は、一致するレコードを検出していません。
sqlite3コマンドラインセッションで次のコマンドを実行すると、機能しますが、FMDBを介したsqliteCAPIでは機能しません。
select * from test where foo isNull;
これが問題を再現するfmdbコードです。fmdbがsqlite3_bind_nullを呼び出す適切な手順を実行しているようです。
NSString *stmt = @"select * from test where shipToCode=:foo";
NSDictionary *dict = @{@"foo" : [NSNull null]};
FMResultSet *rs = [db executeQuery:stmt withParameterDictionary:dict];
int count = 0;
while ([rs next]) {
count++;
}
NSLog(@"Count %d", count);