0

列が関数に渡された値と等しい sqlite データベースをクエリしようとしています。

私のクエリは次のようになります

NSString *query=[NSString stringWithFormat:@"SELECT rowid, name FROM Coops WHERE category=%@",chosenCategory];

このクエリは何も返しませんが、変更すると次のようになります

query=@"SELECT rowid, name FROM Coops WHERE category='the category I am passing';

それはうまく動作します。私の質問は、文字列パラメーターを xcode の sqlite クエリに渡す方法です。

私の全体の方法はこれです

-(NSArray *)coopsInCategory:(NSString *)chosenCategory {

sqlite3_stmt *statement;
NSString *query=[NSString stringWithFormat:@"SELECT rowid, name, hCity, hours  FROM Coops WHERE category=%@",chosenCategory];


/*if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, NULL)!=SQLITE_OK) {
    NSAssert1(0, @"Error preparing statment",sqlite3_errmsg(_database));
}*/





 if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil)== SQLITE_OK)
    {
        while(sqlite3_step(statement)==SQLITE_ROW)
        {

            int uniqueId=sqlite3_column_int(statement, 0);
            char *nameChar=(char *) sqlite3_column_text(statement, 1);

            char *hCityChar=(char *) sqlite3_column_text(statement, 2);

            char *hoursChar=(char *) sqlite3_column_text(statement, 3);

            NSString *name=[[NSString alloc] initWithUTF8String:nameChar];

            NSString *hCity=[[NSString alloc] initWithUTF8String:hCityChar];

            NSString *hours=[[NSString alloc]initWithUTF8String:hoursChar];



            informationObject *info=[[informationObject alloc]coopDetails:uniqueId name:name hCity:hCity hours:hours];



            [retval addObject:info];

            [name release];


            [hCity release];

            [hours release];

        }

     sqlite3_finalize(statement);
 }
return retval;

}

4

1 に答える 1

0

を一重引用符で囲む必要があるようです%@。そうでない場合は、エラー メッセージの内容を追跡してみてください。

于 2012-05-25T18:44:33.817 に答える