我正在尝试使用.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条件。
问题是第二个问题?未读取并生成空白列表。如果我替换第二个?对于整数,它可以正常工作,但不能正确填充特定列表。
有人能说出代码有什么问题吗?
答案 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转换为字符串