ContentResolver where子句在两列上

时间:2014-06-05 11:12:36

标签: android sql sqlite android-contentprovider

我实现了一个ContentProvider,其中SQLlite表包含以下列:

  • id:INTEGER PRIMARY KEY AUTOINCREMENT
  • parentId:INTEGER NOT NULL(外键)
  • 姓名:TEXT
  • 已存档:INTEGER

'archived'列实际上用作布尔标志,其中0是“no”,1是“yes,它已存档”。在那个数据上,我正在做两个不同的查询。

  1. 给我属于特定父母的所有元素(parentId = xxx)
  2. 给我属于特定父级的所有元素并且不归档(parentId = xxx AND archived = 0)

    public Cursor getElements(int parentId,boolean includeArchived){

    Uri queryUri = MyContentProvider.CONTENT_URI;
    String[] projection = new String[] { "id", "parentId", "name", "archived" };
    ContentResolver cr = mContext.getContentResolver();
    
    String where = null;
    String[] whereValues = null;
    
    if (!includeArchived) {
        where = "parentId = ? AND archived = ?";
        whereValues = new String[] { Integer.toString(parentId), "0" };
    } else {
        where = "parentId = ?";
        whereValues = new String[] { Integer.toString(parentId) };
    }
    
    return cr.query(queryUri, projection, where, whereValues, null);
    

    }

  3. 不关心archived-flag的查询有效,但另一个查询没有结果,即使archived的值在数据库中为0。我做错了什么?

0 个答案:

没有答案