1

这是我的代码...我想获取所有具有 320 报价的报价数据,但它只获取第一个报价。请帮我

-(NSMutableArray *)getAllQuotesData
{
    NSMutableArray *quotesArray = [[NSMutableArray alloc] init];

    NSString *sqlStr = [NSString stringWithFormat:@"SELECT quote FROM quotes"];

    sqlite3_stmt *ReturnStatement = (sqlite3_stmt *) [self getStatement:sqlStr];

    while (sqlite3_step(ReturnStatement)==SQLITE_ROW)
    {
        @try
        {
            QuotesDC *myQuote = [[QuotesDC alloc] init];

             NSString *user_id = [NSString stringWithUTF8String:(char 
*)sqlite3_column_text(ReturnStatement,0)];

             NSString *category = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,1)];

             NSString *subcategory = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,2)];

             NSString *quote = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,0)];

             NSString *star = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,4)];

            myQuote.userid = [user_id integerValue];
            myQuote.category = category;
            myQuote.subcategory = subcategory;
            myQuote.quote = quote;
            myQuote.star = star;

            [quotesArray addObject:myQuote];
            NSLog(@"%u", quotesArray.count);
        }
        @catch (NSException *ept) {
            NSLog(@"Exception in %s, Reason: %@", __PRETTY_FUNCTION__, [ept reason]);
        }

        return  quotesArray;
    }
}
4

4 回答 4

1

你的代码没有问题,只要做一件事return dataArray就会在循环之外,你会像这样加载所有引号,接受我的回答谢谢

-(NSMutableArray *)getAllQuotesData
{
    NSMutableArray *quotesArray = [[NSMutableArray alloc] init];

    NSString *sqlStr = [NSString stringWithFormat:@"SELECT quote FROM quotes"];

    sqlite3_stmt *ReturnStatement = (sqlite3_stmt *) [self getStatement:sqlStr];

    while (sqlite3_step(ReturnStatement)==SQLITE_ROW)
    {
        @try
        {
            QuotesDC *myQuote = [[QuotesDC alloc] init];

             NSString *user_id = [NSString stringWithUTF8String:(char 
*)sqlite3_column_text(ReturnStatement,0)];

             NSString *category = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,1)];

             NSString *subcategory = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,2)];

             NSString *quote = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,0)];

             NSString *star = [NSString stringWithUTF8String:(char *)sqlite3_column_text(ReturnStatement,4)];

            myQuote.userid = [user_id integerValue];
            myQuote.category = category;
            myQuote.subcategory = subcategory;
            myQuote.quote = quote;
            myQuote.star = star;

            [quotesArray addObject:myQuote];
            NSLog(@"%u", quotesArray.count);
        }
        @catch (NSException *ept) {
            NSLog(@"Exception in %s, Reason: %@", __PRETTY_FUNCTION__, [ept reason]);
        }


    }
return  quotesArray;
}
于 2013-05-04T08:00:42.347 回答
0

尝试像这样检查您的数据库表 320 记录是否存在,然后它会提供所有数据。

SELECT quote FROM quotes  //it'l gives only quote columnvalues from quotes table.

如果您想获取所有数据,请使用星号“*”符号代替引号。

否则尝试这样,

 SELECT quote FROM quotes limit 320 //it'l gives top 320 records

读完这篇你就发现了问题。选择查询

于 2013-05-04T07:17:45.153 回答
0

用这个替换你的查询字符串

 NSString *sqlStr = [NSString stringWithFormat:@"SELECT * FROM quotes WHERE quote=320"];
于 2013-05-04T07:19:23.423 回答
0

使用此代码,这可能会对您有所帮助

-(void)retrivequoteFromDB
{
    NSMutableArray * quoteArray=[[NSMutableArray alloc]init];

    sqlite3 *sqliteDB;

    sqlite3_stmt *compiledStatement = NULL;

    if(sqlite3_open([databasePath UTF8String], &sqliteDB)==SQLITE_OK)
    {
        NSString *sql=@"SELECT quote FROM quotes";

        const char *sqlC=[sql UTF8String];

        if(sqlite3_prepare(sqliteDB, sqlC, -1, &compiledStatement, NULL)==SQLITE_OK)
        {
            while(sqlite3_step(compiledStatement) == SQLITE_ROW)
            {
                NSString *quote = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];

                [quoteArray addObject:quote];
            }
        }
        sqlite3_reset(compiledStatement);
    }
    sqlite3_finalize(compiledStatement);
}
于 2013-05-04T07:33:33.757 回答