2017-01-29 8 views
-1

나는 메모를 만들기 위해 튜토리얼을 복용 온라인 메모를 사용. 그것은 작동하지만 선택에 따라 노트를 만들고 싶습니다. 나는 그 일을 올바르게했다고 생각했지만 누군가 나에게 잘못한 것을 설명 할 수 있습니까? 코스 코드를 전달하고 있는데 제대로 선택하도록 설정 한 것 같습니다. 내가해야 할 일을 말해줘.안드로이드 SQLiteDatabase 어디 선택

이 코드가 문제 일 수 있습니다. selectionargs 및 where가 null이면 모든 노트를 반환하여 작동합니다. where 문이있는 모든 노트를 반환하고 싶습니다. courseCode = thisCourse.getCourseID() 어떻게해야합니까?

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

답변

1

selectionargs하면 (DBOpenHelper.NOTE_COURSE는 courseCode입니다) 그리고 당신이 NOTE_COURSE이 어디 테이블에서 행을 선택합니다 곳은 모든 음

을 반환하여 작동 null의 null을 사용해야합니다. IS NULL :

String whereClause = DBOpenHelper.NOTE_COURSE + " IS NULL"; 

참고 : 인수 값이 아닙니다! 절은 제한에 사용되는

편집

데이터를 반환 등이 선택이며 절이 지정되는 경우 특별한 경우 모든 행이 쿼리와 일치. 이것은 단순히 "필자가 행을 파일 링하지 않게"한다고 말했기 때문에 null을 전달할 때 발생합니다. 따라서 모든 행이 반환됩니다.

코드도 괜찮아 보이지만 trim()selectionArgs으로 설정하는 것이 확실하지 않습니다.

+0

는 내 말은. I.E. 'return new CursorLoader (this, NotesProvider.CONTENT_URI, null, null, null, null);'어디에 ID를 추가하고 CursorLoader 생성자에서 어떻게 해야할지 모르겠다. – HelixTitan

+0

편집 된 답변을 확인하십시오. –

0

대답은 간단하며 내게 너무 어리 석다. 이 예제에서 볼 수 있듯이 작은 따옴표를 사용하여 매개 변수 SQL을 준비해야합니다. 나는 그것이 모든 노트를 반환 whereClause selectionArgs를 호출하고 반대로 함수 CursorLoader 매개 변수에 null을 사용할 때

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