我正在尝试查询我的数据库,以便它只返回某列中具有特定值的行。但是当我运行它时,它仍会返回所有行。请看一下代码,看看我是否做错了。我试图在PRIORITY列中查询字符串。我想在列表视图中显示这些特定的行。谢谢。
private static final String DATABASE_NAME = "MemoData.db";
private static final int DATABASE_VERSION = 1;
public static final String DATABASE_TABLE = "Places";
public static final String KEY_ID = "_id";
public static final String NAME = "Title";
public static final String CATEGORY = "category";
public static final String PRIORITY = "priority";
private static final String TAG = "DBAdapter";
private static final String DATABASE_CREATE = "create table Places (_id integer primary key autoincrement, Title text, category text, priority text);";
public Cursor priorityData(){
String[] resultColumns = new String[] {KEY_ID,NAME,CATEGORY,PRIORITY };
String[] condition = {"High"};
Cursor cursor = db.query(DATABASE_TABLE, resultColumns, KEY_ID + "=" + "?", condition, null, null, null);
if(cursor.moveToNext()){
return cursor;
}
return cursor;
}
优先级列的值可以是“低”,“中”或“高”。我试图查询数据库以返回其值在PRIORITY列中设置为“高”的行。
答案 0 :(得分:1)
我正在尝试查询PRIORITY列中的字符串...
所以你的过滤器应该是
PRIORITY + " = ?"
而不是
KEY_ID + "=" + "?"
另外,如果有一个文本列来保存您正在过滤的有限可能性中的值并且最后一个没有意义,那么这不是一个好主意。
答案 1 :(得分:1)
我认为他的意思是你应该在ENUM
变量中使用PRIORITY
类型,因为它的可能性有限。
所以看起来应该是这样的:
priority ENUM('LOW','MEDIUM','HIGH') NOT NULL DEFAULT 'MEDIUM'