我正在编写一个Android应用程序,它试图根据两个不同的标准从数据库中提取数据。
锻炼和锻炼领域都是数据库中的字符串。我想返回一个仅包含满足BOTH条件的行的游标。哦,我也希望它按照日期顺序排序......
public Cursor graphQuery(String exercise, String workout) {
Cursor cursor = mDb.query(DATABASE_TABLE, new String [] {KEY_DATE, KEY_REPS,
KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL}, "KEY_WORKOUT=" + workout + "AND" +
"KEY_EXERCISE=" + exercise, null , null, null, KEY_DATE);
return cursor;
}
我是一名新的安卓程序员,非常感谢您的帮助!
答案 0 :(得分:29)
使用selection
和selectionArgs
:
public Cursor graphQuery(String exercise, String workout) {
Cursor cursor = mDb.query(DATABASE_TABLE, new String [] {KEY_DATE, KEY_REPS,
KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL}, "KEY_WORKOUT = ? AND KEY_EXERCISE = ?",
new String[] { workout, exercise },
null,
null,
KEY_DATE);
return cursor;
}
注意selection
String
如何?
代替实际值,实际值是String[]
和selectionArgs
参数传递的。 SQLite会将这些?
替换为String[]
selectionArgs
中的值。
答案 1 :(得分:1)
简短回答:“AND”周围缺少空格 - > “和”。:
答案很长:请使用参数标记 - 您会立即看到缺少的空格:
Cursor cursor = mDb.query(DATABASE_TABLE, new String [] { KEY_DATE, KEY_REPS,
KEY_REPS_FEEL, KEY_WEIGHT, KEY_WEIGHT_FEEL }, "KEY_WORKOUT=? and KEY_EXERCISE=?", new String[] { workout, exercise }, null, null, KEY_DATE);