2013-05-29 3 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(); 

Но когда я получить строки, данные точно так же, как и раньше. Я уже обыскал SO, но я не мог найти ответы. Данные 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

Смежные вопросы