2013-05-02 49 views
-1
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

回答

1

參數標記在字符串文本中不被識別(否則,在字符串中將不可能使用?字符)。

你必須從三根弦,你的參數和前綴和後綴構建你的LIKE模式:

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

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