如何获取表中列的所有数据

时间:2013-05-04 07:01:33

标签: iphone ios objective-c xcode sqlite

这是我的代码...... 我想获取具有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 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

尝试这样做一次检查你的数据库表320放置或不存在的记录,然后它给ll数据。

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

一旦读完这个,你就发现了问题。 select Query

答案 2 :(得分:0)

用此

替换您的查询字符串
 NSString *sqlStr = [NSString stringWithFormat:@"SELECT * FROM quotes WHERE quote=320"];

答案 3 :(得分: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);
}