好吧,我正在SQLite数据库中搜索名为Artists的行中的所有条目...但我不希望同一个艺术家出现两次...iOS:根据以前的条目筛选SQLite查询/检查条目
-(NSArray *)findAllArtists
{
NSMutableArray *returnArray = [[[NSMutableArray alloc] init] autorelease];
NSString *query = @"SELECT * FROM Painting";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil)
== SQLITE_OK)
{
while (sqlite3_step(statement) == SQLITE_ROW)
{
char *uniqueIdChars = (char *) sqlite3_column_text(statement, 0);
char *artistChars = (char *) sqlite3_column_text(statement, 1);
NSString *uniqueId = [[NSString alloc] initWithUTF8String:uniqueIdChars];
NSString *artist = [[NSString alloc] initWithUTF8String:artistChars];
PaintingInfo *info = [[PaintingInfo alloc] initWithUniqueId:uniqueId artist:artist];
[returnArray addObject:info];
[uniqueId release];
[artist release];
}
sqlite3_finalize(statement);
}
sqlite3_close(database);
return returnArray;
}
所以,我在想什么是一个办法可能是把结果加到了returnArray,我在那里检查,如果它以前的结果一致之前里面使用循环......这听起来相当简单,但由于某种原因,我没有得到我尝试工作的循环(认为我可能没有睡眠工作太久,所以我盲目地主演我的错误)... 然后再次,我对SQLite相当陌生,所以它可能是一种很糟糕的方式去实现它...
有什么建议吗?
DISTINCT声音,我需要什么......但它给我带来了一些麻烦......如果我选择了“从绘画中选择不同的艺术家”,我不会得到单身queId,所以我尝试创建一个新的查询,在那里我只搜索Artist ...所以,如果我做了SELECT * FROM绘画,我得到了所有的艺术家...所以我尝试添加DISTINCT,所以它是SELECT DISTINCT Artist FROM绘画......但它然后产生和我的NSString *艺术家行错误,说:“线程1:程序接收到的信号SIGBART” – user969043
好吧,所以找到了另一种方式:@“SELECT * FROM Painting GROUP BY Artist”; - 似乎工作...虽然我想让DISTINCT工作,但我知道将来如何 – user969043