2013-08-23 23 views
0

美好的一天! 我有一個計算日期的問題。我有一個日期(一年中的一天數)和今天的日期。我需要得到減法的結果(Today_date - COLUMN_DATE = COLUMN_LAST) 這是我的代碼。顯然,它包含一些錯誤。SQLite Today_date - date

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,CV,COLUMN_ID + 「=?」 + ID,新的String [] {} ColumnID的);'如何獲得ID? – 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