.rawQuery多个?参数

时间:2011-06-14 12:26:56

标签: android sqlite

我正在尝试使用.rawQuery返回SQLite数据库中列的内容。 我有一个用于查询数据库的列表,具体取决于所点击的内容取决于返回的内容。问题是列表中的第一个项目想要返回所有结果,而下面的项目只返回某些结果。

我使用以下代码:

  public Cursor getTrailByType(String id) {
     String[] args={id};

     return(getReadableDatabase()
          rawQuery("SELECT _id, NAME FROM trail WHERE TYPE_id=? OR ENT=?",
                args));
  }

TYPE_id是要返回的特定结果(如果?介于2和10之间),ENT全部返回(如果?= 1;我只是添加了第二列ENT,所有行中的数字为1)。因此,如果id为1,则返回ENT条件,但如果它在2到10之间,则返回TYPE_id条件。

问题是第二个问题?未读取并生成空白列表。如果我替换第二个?对于整数,它可以正常工作,但不能正确填充特定列表。

有人能说出代码有什么问题吗?

2 个答案:

答案 0 :(得分:3)

试试这个

public Cursor getTrailByType(String id, boolean needAll) {    
    String[] args = null;
    String query = "SELECT _id, NAME FROM trail";

    if(!needAll){
        query += " WHERE TYPE_id=?";
        args = new String[]{id};
    }
    return (getReadableDatabase().rawQuery(query, args));
}

答案 1 :(得分:0)

你可以摆脱ENT专栏并尝试这个......

// put any id and 1 as ent to get all put id and ent=0 to get specific id
public Cursor getTrailByType(String id, int ent) {
   String[] args={id, Integer.toString(ent)}; 
   return(getReadableDatabase().
              rawQuery("SELECT _id, NAME FROM trail WHERE TYPE_id=? OR 1=?", args));
}

编辑:他需要将int转换为字符串