2

プロジェクトで動的な LIKE ステートメントを実行する際に問題があります。このクエリは魅力的に機能し、名前に「t」が含まれるすべてのアイテムを返します。

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%t%%'";

これを動的に実行しようとすると、エラーは発生しませんが、結果は空になります。値が null のようです。正しい値を出力する文字列値「s」をバインドしようとしました

NSLog(@"bbc_ : search menu items from db based on: %@",s);
const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
sqlite3_bind_text(statement, 1, [s UTF8String],-1,SQLITE_TRANSIENT);

次を使用する代わりに、この値をバインドするにはどうすればよいですか。

const char *sql = "select * from bbc_ipad_v1_node where name LIKE '%%?%%'";
4

2 に答える 2

4

http://www.innerexception.com/2008/10/using-like-statement-in-sqlite-3-from.htmlですばらしい説明を見つけました

次の行を変更しました:

const char *sql = "select * from bbc_ipad_v1_node where name LIKE ?001";

NSString *searchInput = [NSString stringWithFormat:@"%@%%", s];
sqlite3_bind_text(statement, 1, [searchInput UTF8String],-1,SQLITE_TRANSIENT); 
于 2010-04-15T08:44:29.983 に答える