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
相关产品推荐
相关产品推荐

