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