以下は私のdb関数です:
+(NSArray*)searchWithKey:(NSString*)_key{
NSMutableArray* tmpArray = [NSMutableArray array];
static Statement* stmt = nil;
char* sql = "select * from Bookmarks where BMUrl like '%?%'";
if (stmt == nil) {
stmt = [DBConnection statementWithQuery:sql];
[stmt retain];
}
[stmt bindString:_key forIndex:1];
while ([stmt step] == SQLITE_ROW) {
BookMark* tmpBM = [[BookMark alloc] initWithStatement:stmt];
NSLog(@"tmpBM = %@",tmpBM);
[tmpArray addObject:tmpBM];
[tmpBM release];
}
[stmt reset];
return tmpArray;}
SQL のキーワードは、私が使用する「like」ですが、sqlite が返す結果はありません。SQL を「select * from Bookmarks where BMUrl like '%h%'」に変更すると、いくつかの結果が返されます。したがって、関数「bindString:forIndex」が間違いだと思います。コードは次のとおりです。
- (void)bindString:(NSString*)value forIndex:(int)index{
sqlite3_bind_text(stmt, index, [value UTF8String], -1, SQLITE_TRANSIENT);}
私が使用する正しい sqlite3 api はどれですか? ありがとう!