目标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);
}
答
参数标记在字符串文本中不被识别(否则,在字符串中将不可能使用?
字符)。
你必须从三根弦,你的参数和前缀和后缀构建你的LIKE
模式:
const char *sql = "Select count(*) from Documents"
" WHERE DocumentTag LIKE '%i,' || ? || ',%i'";
+0
谢谢。CL – user1036963 2013-05-02 10:39:05
什么是你这段代码遇到的问题?发生了一些错误?请添加一些你问的问题的更具体的条款。谢谢。 – 2013-05-02 08:18:52
我不知道你期待什么,如果你想获得其中包含文本的DocumentTag行,然后调用一样为const char * SQL =“从文档其中DocumentTag像select *?”;和绑定文本使用:\t \t sqlite3_bind_text(声明,1,[@ “文本” UTF8字符串],-1,NULL); – 2013-05-02 08:30:13