2013-05-29 105 views
2

我想更新我的SQLite數據庫中的一行。在我的數據庫的Helper類更新行方法如下Android SQLite更新行不起作用

public long updateNote(long rowId, String title, String body) { 
    ContentValues args = new ContentValues(); 
    args.put(KEY_TITLE, title); 
    args.put(KEY_BODY, body); 

    return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowId, 
      null); 
} 

而且該行被更新如下:

 mDbHelper.open(); 
    mDbHelper.updateNote(mRowId, title, body); 
    mDbHelper.close(); 

但是,當我檢索行,該數據是完全和以前一樣。我已經搜索過,但我找不到任何答案。該數據在光標retrived這樣的:

public Cursor fetchAllNotes() { 
    return mDb.query(DATABASE_TABLE, 
      new String[] { KEY_ROWID, KEY_TITLE, KEY_BODY, "link", "type", 
        KEY_DATE, KEY_TIME, KEY_DAY, KEY_YEAR }, null, null, 
      null, null, null); 

} 

回答

4

嘗試改變方法,如:

public long updateNote(long rowId, String title, String body) { 
    ContentValues args = new ContentValues(); 
    args.put(KEY_TITLE, title); 
    args.put(KEY_BODY, body); 

    return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "=?", 
      new String[]{rowId+""}); 
} 

希望這個作品。

+0

它仍然無法正常工作。你爲什麼做'KEY_ROWID =?' – AndroidDev

+0

使用參數化查詢更好,因爲數據庫可以優化它們以獲得更好的性能,但不會改變任何內容。 – eternay

+0

+1它現在可以工作(被困在那裏幾天),但我必須做「rowId = rowId +1;」在ContentValues聲明之前。你應該編輯你的答案,以包括其他人,謝謝:D – AndroidDev