SQLite查询帮助多个选项

时间:2011-04-19 16:58:07

标签: android database sqlite cursor

我有一个Android应用程序正在使用SQLite数据库来确定是否已经创建了某些“成就”。如果列中包含每个'season'中的一个,我需要一个返回游标长度为4的查询。

因此,如果我在列''_id'上执行查询,如下所示:

_id:

yada
Autumn
yada
Summer
Summertime
yada
yada
Winter
Spring

它将返回4行光标(从而表明将实现'All Four Seasons'成就。

一个查询是否可以实现,或者我必须在应用程序中使用多个游标和代码?我想使用LIKE,因为并非所有条目都是完全相同的文本(即Summer或Summertime,但两者都应符合条件)。

1 个答案:

答案 0 :(得分:1)

您应该能够在查询的where子句中使用and,like,或括号来实现此目的。有点像...

Cursor mC = mDb.query("season", null, "_id like '%summmer%' and "
    + "_id like '%winter%' and "
    + "_id like '%spring%' and "
    + "(_id like '%fall%' or _id like '%autumn%')",
    null, null, null, null);

在此之后,您可以拥有类似......

String [] seasons = new String[] {"spring", "summer", "fall", "autumn", "winter");
boolean fallExists = false;
int seasonCount = 0;

for(int i = 0; i < 5; ++i){
   if(i == 3 && fallExists) continue;
   mC.moveToFirst();
   do{
      if(mC.getString(ID_COLUMN).toLowerCase().contains(seasons[i])){
          seasonCount++;
          if(i == 2) fallExists = true;
      }
   } while ((mC.moveToNext()));
}

if(seasonCount == 4){
   //have a party
}