2012-09-28 4 views
3

특정 캘린더에서 이벤트를 읽으려고합니다. 다음은 사용하려고 시도하는 코드입니다. 그러나 나는 선택이 어떻게 보일지를 모른다. 선택 항목에 달력 아이디를 사용하고 싶습니다. 선택 (null)이 없으면 모든 일정을 읽습니다. 그러나 원하는 것은 하나뿐입니다. 쿼리는 다음과 같습니다캘린더 이벤트 쿼리 선택

public final Cursor query (Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 

선택 :
는 SQL로 포맷 반환 할 행을 선언 필터, WHERE 절합니다 (제외 WHERE 자체). null를 건네 주면 (자), 지정된 URI의 모든 행이 돌려 주어집니다.

  Uri.Builder builder = Instances.CONTENT_URI.buildUpon(); 
      ContentUris.appendId(builder, now - DateUtils.DAY_IN_MILLIS); 
      ContentUris.appendId(builder, now + DateUtils.DAY_IN_MILLIS); 

      Cursor mCursor = null; 
      final String[] projection = new String[] 
      { CalendarContract.Events.TITLE, CalendarContract.Events.DTSTART, CalendarContract.Events.DTEND}; 

      mCursor = getContentResolver().query(
       builder.build(), projection, Instances._ID + calendarID, null, null); 
       mCursor.moveToFirst(); 

오류 그게 전부 코드 위 :

09-29 00:07:41.800: E/AndroidRuntime(14507): FATAL EXCEPTION: TweetCollectorTimer 
09-29 00:07:41.800: E/AndroidRuntime(14507): android.database.sqlite.SQLiteException: no such column: _id3: , while compiling: SELECT title, dtstart, dtend FROM Instances INNER JOIN view_events AS Events ON (Instances.event_id=Events._id) WHERE (begin<=? AND end>=?) AND (_id3) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:179) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at android.content.ContentProviderProxy.query(ContentProviderNative.java:358) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at android.content.ContentResolver.query(ContentResolver.java:311) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at de.ring.AppService$1.run(AppService.java:96) 
09-29 00:07:41.800: E/AndroidRuntime(14507): at java.util.Timer$TimerImpl.run(Timer.java:284) 

편집 :

덕분에 많이, 내가 그것을 변경

이 코드는 선택과 첫 번째 시도이다 ~까지 :

  mCursor = getContentResolver().query(
        builder.build(), projection, Instances.CALENDAR_ID + " = ?", 
        new String[]{""+calendarID}, null); 

_ID가 아닌 CALENDAR_ID를 사용하는 것이 중요합니다.

+0

문제를 해결 한 후에 다른 오류로 질문을 변경했습니다 !!! 당신은 새로운 오류와 함께 새로운 질문을 게시해야합니다 !! – confucius

+0

죄송합니다, 오류가 실제 아니 었어, 나는 방금 잘못된 ID를 사용 따라서이 오류가있어. 솔루션으로 EDIT를 변경했습니다. – user1390816

답변

2

는 3 매개 변수는 선택 문자열을 가지고 있기 때문에 대신

getContentResolver().query(
       builder.build(), projection, 
Instances._ID + calendarID, null, null); 

getContentResolver().query(
        builder.build(), projection, Instances._ID + "=?", 
new String[]{""+calendarID}, null); 

을하고이 Instances._ID + calendarID가이

SELECT ........ WHERE _id3; 

로 평가됩니다 통과 그것 달력 아이디 번호를 열 이름에 추가하십시오.