2013-08-23 3 views
0

안녕하세요! 날짜 계산에 문제가 있습니다. 저는 한 날짜 (연중 하루 수)와 오늘 날짜를가집니다. 빼기 결과를 가져와야합니다 (Today_date - COLUMN_DATE = COLUMN_LAST) 여기에 제 코드가 있습니다. 분명히, 여기에는 몇 가지 실수가 있습니다.SQLite 오늘 날짜 - 날짜

Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault()); 
    Cursor cursor = mDB.query(DB_TABLE, new String[] {COLUMN_DATE} , null, null, null, null, null); 
while(cursor.moveToNext()) 
{ 
    ContentValues cv = new ContentValues(); 
    cv.put(COLUMN_LAST, localCalendar.get(Calendar.DAY_OF_YEAR) - cursor.getInt(cursor.getColumnIndex(COLUMN_DATE))); 
    mDB.update(DB_TABLE, cv, COLUMN_ID + " = " + cursor.getPosition(), null); 
} 

어떻게하면됩니까? 귀하의 답변에 감사드립니다.

답변

0

커서 위치가 행 ID와 같다고 가정하면 사실이 아닐 수도 있습니다. 행을 업데이트 할 때는 커서 위치가 아닌 column_id를 전달해야합니다.

Calendar localCalendar = Calendar.getInstance(TimeZone.getDefault()); 
    Cursor cursor = mDB.query(DB_TABLE, new String[] {COLUMN_ID, COLUMN_DATE} , null, null, null, null, null); 
    while(cursor.moveToNext()) 
    { 
     ContentValues cv = new ContentValues(); 
     int columnId = cursor.getInt(0); // cause COLUMN_ID is 0th in projection above 
     cv.put(COLUMN_LAST, localCalendar.get(Calendar.DAY_OF_YEAR) - cursor.getInt(1)); 
     mDB.update(DB_TABLE, cv, COLUMN_ID + " = ?" + id, new String[] {columnId}); 
    } 

    // always close cursor 
    cursor.close(); // you can use try-finally block 
+0

아하는, 맞아, 감사합니다 :)이 코드에 대한 몇 가지 의견을 전해 주 시겠어요 'mDB.update (DB_TABLE, 이력서, COLUMN_ID + "=?"+ ID, 새로운 String [] {해당 columnid});'이드를 얻는 방법? – user2710868

+0

COLUMN_ID +의 간단한 물음표 + = "?" 문자열 배열의 첫 번째 값으로 대체됩니다. 자세한 내용은 http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#update(java.lang.String, android.content.ContentValues, java.lang.String, java) 문서를 확인하십시오. .lang.String []) – Mike

+0

흠 ... 오류가 발생했습니다. 나는 그것을했다 :'mDB.update (DB_TABLE, cv, COLUMN_ID + "=?"+ columnId, new String [] {String.valueOf (columnId)}); – user2710868