Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhoneSdk、SQLite数据库搜索查询不工作_Iphone_Sqlite - Fatal编程技术网

iPhoneSdk、SQLite数据库搜索查询不工作

iPhoneSdk、SQLite数据库搜索查询不工作,iphone,sqlite,Iphone,Sqlite,我想知道如何在搜索查询中传递特定的单词或字符来查找记录。。 我传递的格式类似于“%%@%%”。 但它没有给我输出… 这是我的密码 searchName = [NSString stringWithFormat:@"'%%%@%%'",[[NSUserDefaults standardUserDefaults] objectForKey:@"key"]]; -(void)getSearchData { NSLog(@"search Name %@", searchNa

我想知道如何在搜索查询中传递特定的单词或字符来查找记录。。 我传递的格式类似于“%%@%%”。
但它没有给我输出…
这是我的密码

searchName = [NSString stringWithFormat:@"'%%%@%%'",[[NSUserDefaults standardUserDefaults] objectForKey:@"key"]];  
-(void)getSearchData  
{  

        NSLog(@"search Name %@", searchName);   

    searchArray = [[NSMutableArray alloc] init];   

    const char *sql = "select * from features where lower(name) like ? limit 500";  
    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL)!= SQLITE_OK)  
    {  
        NSAssert1(0,@"error : failed to prepare statement with message '%s'.",sql ite3_errmsg(database));  

      }  
    sqlite3_bind_text(selectstmt, 1, [searchName UTF8String], -1, SQLITE_TRANSIENT);  
    //  sqlite3_bind_text(selectstmt, 2, [state UTF8String], -1, SQLITE_TRANSIENT);  

    while (sqlite3_step(selectstmt) == SQLITE_ROW)  
    {   

        NSMutableDictionary *datah = [[NSMutableDictionary alloc] init];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,0)] forKey:@"number"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,1)] forKey:@"name"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,2)] forKey:@"type"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,4)] forKey:@"country"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,5)] forKey:@"lat"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,6)] forKey:@"long"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,7)] forKey:@"elevation"]; 

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,8)] forKey:@"area"];  

        [datah setObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,3)] forKey:@"state"];  

        [searchArray addObject:datah];  
        [datah release];  
    }  
    sqlite3_reset(selectstmt);    
}
如果我用单词“s”传递同一个查询,我会在sqlite查询生成器中得到100条记录,但如果我传递了上述代码,则不会返回任何记录

请帮助我

我处理了上面给出的代码,并按如下方式修复了它

-(void)getSearchData:(NSString*)searchText
{  

    **NSString* searchName = [NSString stringWithFormat:@"%%%@%%",searchText];**  
    NSLog(@"search Name %@", searchName);   
    sqlite3 *database;
    sqlite3_stmt *selectstmt; 
    NSString* searchQuery = @"SELECT * FROM contacts WHERE lower(name) like ?";
    const char *sql =   [searchQuery UTF8String];
      **if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {**
          if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) != SQLITE_OK)  
          { 
            //NSAssert1(0,@"error : failed to prepare statement with message '%s'.",sql ite3_errmsg(database));  

          }  
          sqlite3_bind_text(selectstmt, 1, [searchName UTF8String], -1, SQLITE_STATIC);  
          while (sqlite3_step(selectstmt) == SQLITE_ROW)  
          {     
            NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt,0)]);
          }  
          sqlite3_reset(selectstmt);    
      }
    sqlite3_close(database);
}
更改的部分可以在Double*之间找到。你还想读书吗


我更改的两个步骤是打开数据库连接(您必须在其他位置执行),然后从searchName中删除“”。一定要让我们知道这是否解决了问题。

为什么不添加图片?使用gravtar.com作为你的头像。真的很感激。。。。我刚刚犯了一个错误,在查询中用单引号传递了一个searchName。thanx再次…@Rahul干得好+1用于提供正确的代码和详细说明的链接。