从sqlite数据库中的所有值获取结论条件

时间:2018-02-01 15:02:15

标签: android sqlite logic android-sqlite conditional-statements

我在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;
}

2 个答案:

答案 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 }