You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android SQLite查询开发:筛选COURSES表特定异常值数据

完善后的SQL查询语句与代码示例

没问题,我帮你补全SQL查询语句,把你提到的所有筛选条件都加进去。你只需要把rawQuery里的SQL字符串补充完整,把缺失的course_id=0、level_code='Select level'和grade='Grade'这几个条件用OR连接起来就行,注意字符串值要放在单引号里。

完整的代码片段如下:

public List<Courses> getListCourseError() {
    Courses courses = null;
    List<Courses> coursesList = new ArrayList<>();
    openDatabase();
    // 补全所有筛选条件的SQL语句
    Cursor cursor = mDatabase.rawQuery(
        "SELECT * FROM COURSES WHERE course_id=0 OR semester_id=0 OR level_id=0 OR level_code='Select level' OR grade='Grade'",
        null
    );
    
    // 补充游标遍历与数据封装逻辑(原代码缺失的关键部分)
    if (cursor.moveToFirst()) {
        do {
            // 根据表字段对应Cursor索引,创建Courses对象并添加到列表
            courses = new Courses();
            courses.setCourseId(cursor.getInt(cursor.getColumnIndex("course_id")));
            courses.setSemesterId(cursor.getInt(cursor.getColumnIndex("semester_id")));
            courses.setLevelId(cursor.getInt(cursor.getColumnIndex("level_id")));
            courses.setLevelCode(cursor.getString(cursor.getColumnIndex("level_code")));
            courses.setGrade(cursor.getString(cursor.getColumnIndex("grade")));
            coursesList.add(courses);
        } while (cursor.moveToNext());
    }
    
    // 关闭游标与数据库连接,避免资源泄漏
    cursor.close();
    closeDatabase();
    
    return coursesList;
}

关键说明:

  • 所有筛选条件通过OR连接,满足任一条件的行都会被查询出来,完全匹配你的需求;
  • 字符串类型的条件(level_code和grade)必须用单引号包裹,这是SQL的语法硬性要求;
  • 我补充了游标遍历和数据封装的逻辑——原代码只写了查询部分,没有把Cursor中的数据转换成Courses对象并添加到列表,这是实现功能必不可少的环节;
  • 操作完游标后一定要关闭它,同时根据你的openDatabase()实现,记得在合适时机关闭数据库连接,避免资源浪费。

内容的提问来源于stack exchange,提问作者user7197369

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:33:49