【问题标题】:SQL Android Query formulation with multiple conditions具有多个条件的 SQL Android 查询公式
【发布时间】:2011-06-13 16:01:47
【问题描述】:

我正在编写一个 android 应用程序,它试图根据两个不同的标准从数据库中提取数据。

锻炼和锻炼字段都是数据库中的字符串。我想返回一个游标,其中只有满足两个条件的行。哦,我还希望它按日期顺序排序...

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

我是一个新的 android 编码器,希望能得到帮助!

【问题讨论】:

  • 您可以通过在 selection 字符串中引用 workoutexercise 来使您的代码正常工作。但是,这不是首选方法。有关如何正确使用selectionArgs 参数的信息,请参阅我的答案。

标签: android sql parameters


【解决方案1】:

使用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 如何使用 ?s 代替实际值,并且实际值作为 String[]selectionArgs 参数传入。 SQLite 会将那些 ?s 替换为来自 String[] selectionArgs 的值。

【讨论】:

  • 啊,我想弄清楚如何使用?。我已经放弃了那些。看来我在引文上几乎是错的。感谢您及时的回复!我仍然有办法弄清楚,但至少我现在知道代码是正确的。
【解决方案2】:

简答:“AND”周围缺少空格-->“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);

【讨论】:

    猜你喜欢
    • 2017-02-24
    • 2021-07-26
    • 1970-01-01
    • 2019-07-18
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    相关资源
    最近更新 更多