我使用在线笔记教程做笔记。它有效,但我想根据选择做笔记。我以为我做对了,但有人可以向我解释我做错了什么吗?我正在传递课程代码,我认为我将其设置为正确选择。告诉我我需要做什么。
这段代码似乎是个问题。如果selectionargs和where为null,则返回所有音符。我想将where语句返回所有注释为WHERE courseCode = thisCourse.getCourseID()我该怎么做?
(DBOpenHelper.NOTE_COURSE是courseCode)
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String whereClause = DBOpenHelper.NOTE_COURSE+"=?";
String[] selectionArgs = { thisCourse.getCourseID().trim() };
return new CursorLoader(this, NotesProvider.CONTENT_URI, null, whereClause, selectionArgs, null);
}
答案 0 :(得分:1)
如果selectionargs和where为null,则返回所有音符
如果您想从表中选择NOTE_COURSE
为空的行,则必须使用IS NULL
:
String whereClause = DBOpenHelper.NOTE_COURSE + " IS NULL";
注意:它不是参数值!
修改强>
Where子句用于限制返回的数据,因此它是可选,如果没有指定特殊的where子句,则所有行都与查询匹配。这是您传递null
时发生的情况,因为您只是告诉“我不想要行文件”,因此返回所有行。
此外,您的代码看起来还不错,但我不确定您为设置trim()
而致电selectionArgs
。
答案 1 :(得分:0)
答案很简单,让我觉得非常愚蠢。您需要通过在它们周围添加单引号来使参数SQL准备就绪,如本例所示。
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
String whereClause = DBOpenHelper.NOTE_COURSE+" LIKE " + "'"+thisCourse.getCourseID()+"'";
return new CursorLoader(this, NotesProvider.CONTENT_URI, null, whereClause, null, null);
}