我在sqlite中有一个包含两列的数据库表;命名为#34; Id"和"状态"
所有Id的默认状态为" 0"
Id | status
-----------------
A | 0
B | 0
C | 0
D | 0
当我开始活动时,状态变为" 1&#34 ;;一个接一个地
Id | status
-----------------
A | 1
B | 0
C | 0
D | 0
当状态达到" 1"对于所有Id,我想继续进行下一个活动
Id | status
-----------------
A | 1
B | 1
C | 1
D | 1
这里有一些代码
public String check() {
// TODO Auto-generated method stub
String[] coloumns = new String[]{"idx", "status"};
SQLiteDatabase db = dbHelper.getReadableDatabase();
String result = " ";
Cursor c = db.query("DATA", coloumns, null, null, null, null, null);
int rowid = c.getColumnIndex("idx");
int rowstat = c.getColumnIndex("status");
c.moveToFirst();
String midx = c.getString(rowid);
String mstat = c.getString(rowstat);
for (int i = 1; i < c.getCount(); i++) {
***i don't know how the code for logic/conditions here***
c.moveToNext();
}
c.close();
db.close();
return null;
}
答案 0 :(得分:1)
查询状态不等于1的所有项目。当计数为0时,您已完成。
答案 1 :(得分:0)
如果您使用SELECT sum(status) AS resolved_status FROM DATA
进行查询,则会返回一个游标,其中一行包含一个名为resolved_status的列,该值是行的状态列的总和。
因此,当 resolved_status 为4时,您的条件就会得到满足。
因此,您的check
方法可能是: -
public boolean check() {
String column_name = "resolved_status";
int resolved_status = 0; // default unchecked therefore false
String[] coloumns = new String[]{"sum(status) AS " + column_name}; //<<<< CHANGED
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor c = db.query("DATA", coloumns, null, null, null, null, null);
if (c.moveToFirst()) {
resolved_status = c.getInt(c.getColumnIndex(column_name));
}
c.close();
db.close();
return (resolved_status == 4);
}
请注意,签名已更改,以便check
方法返回布尔值,以便您可以使用if (check()) { //do something } else { //do another thing }