具有多种条件的SQL Android Query配方

时间:2011-06-13 16:01:48

标签: android sql parameters

我正在编写一个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;
}

我是一名新的安卓程序员,非常感谢您的帮助!

2 个答案:

答案 0 :(得分:29)

使用selectionselectionArgs

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);