سؤال

لدي مشاكل في تشغيل بيان مثل ديناميكي مثل مشروعي: يعمل هذا الاستعلام مثل السحر ويعيد جميع العناصر باسم "T" باسمها:

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

عندما أحاول القيام بذلك ديناميكيًا ، لا أحصل على أخطاء ، ولكن مجرد نتيجة فارغة. يبدو أن القيمة لاغية. أحاول ربط قيمة السلسلة التي تخرج قيمة صحيحة

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 '%%?%%'";
هل كانت مفيدة؟

المحلول

فقط وجدت تفسيرًا رائعًا في 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); 

نصائح أخرى

يمكنك أن تقول في الواقع فقط

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

(لاحظ المنفرد-%س)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top