目标C sqlite的功能一样

问题描述:

SELECT count(*) from BOOKS where BOOKS.TAG_ID like '%,1,%' 

我想执行在Objective-C这个查询。目标C sqlite的功能一样

const char *sql = "Select count(*) from Documents WHERE DocumentTag LIKE '%i,?,%i'"; 
sqlite3_stmt *sqlStatement; 
NSString *bindParam = [NSString stringWithFormat:@"%d", tagId]; 
if(sqlite3_bind_int(sqlStatement, 1, tagId)!= SQLITE_OK){ 
    NSLog(@"Problem binding search text param."); 
} 
else if(sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL)==SQLITE_OK) 
{ 
    sqlite3_bind_int(sqlStatement, 1, sqlite3_column_int(sqlStatement, 0)); 
    if(sqlite3_step(sqlStatement)==SQLITE_ROW) 
    taskCount=sqlite3_column_int(sqlStatement,0); 
    sqlite3_reset(sqlStatement); 
    sqlite3_finalize(sqlStatement); 

} 
+2

什么是你这段代码遇到的问题?发生了一些错误?请添加一些你问的问题的更具体的条款。谢谢。 – 2013-05-02 08:18:52

+0

我不知道你期待什么,如果你想获得其中包含文本的DocumentTag行,然后调用一样为const char * SQL =“从文档其中DocumentTag像select *?”;和绑定文本使用:\t \t sqlite3_bind_text(声明,1,[@ “文本” UTF8字符串],-1,NULL); – 2013-05-02 08:30:13

参数标记在字符串文本中不被识别(否则,在字符串中将不可能使用?字符)。

你必须从三根弦,你的参数和前缀和后缀构建你的LIKE模式:

const char *sql = "Select count(*) from Documents" 
        " WHERE DocumentTag LIKE '%i,' || ? || ',%i'"; 
+0

谢谢。CL – user1036963 2013-05-02 10:39:05