-1

我正在尝试搜索用户在搜索栏中输入的文本,以检查该文本是否包含在任何数据库条目中,并希望将结果存储到NSMutableArray

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [search resignFirstResponder];
    [search endEditing:YES];

    str = search.text;

    app = (AppDelegate *)[[UIApplication sharedApplication]delegate];
    app.databasePath = [app getDBPath];
    const char *dbpath = [app.databasePath UTF8String];
    sqlite3_stmt *statement;

    if (sqlite3_open(dbpath, &conn) == SQLITE_OK)
    {
        NSString *strSelectQuery = [NSString stringWithFormat: @"SELECT songname FROM Songs WHERE songname LIKE '%%@%'", str];

        const char *query_stmt = [strSelectQuery UTF8String];

        if (sqlite3_prepare(conn, query_stmt, -1, &statement, NULL) == SQLITE_OK)
        {
            while (sqlite3_step(statement) == SQLITE_ROW)
            {
                [matchList addObject:[[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]];
            }
            sqlite3_finalize(statement);
        }
        sqlite3_close(conn);
    }
    NSLog(@"Total Songs : %i", [matchList count]);
}
4

1 回答 1

0

上面的代码不起作用,因为我忘记写一个 Line 在我输入文本并单击 UISEarchBar 的 Search 按钮后重新加载数据

[_searchResultTable reloadData];

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [search resignFirstResponder];
    [search endEditing:YES];

    str = search.text;

    songList = [[NSMutableArray alloc] init];

    app = (AppDelegate *)[[UIApplication sharedApplication]delegate];
    app.databasePath = [app getDBPath];
    const char *dbpath = [app.databasePath UTF8String];
    sqlite3_stmt *statement;

    if (sqlite3_open(dbpath, &conn) == SQLITE_OK)
    {
        NSString *strSelectQuery = [NSString stringWithFormat: @"SELECT * FROM Songs WHERE songname LIKE '%%%@%%'", str];
        const char *query_stmt = [strSelectQuery UTF8String];

        if (sqlite3_prepare(conn, query_stmt, -1, &statement, NULL) == SQLITE_OK)
        {
            while (sqlite3_step(statement) == SQLITE_ROW)
            {
                [songList addObject:[[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)]];
            }
            sqlite3_finalize(statement);
        }
        sqlite3_close(conn);
    }

    [_searchResultTable reloadData];
}
于 2014-09-13T12:10:15.813 回答