Intereting Posts

SQLite запрос на обновление Android

Таблица содержит 4 столбца: rowID, word, defintition, group_id

Я хочу изменить слово и определение определенной строки. Итак, вот мой код (слово – это объект, в котором хранятся слово, определение, id и group_id)

ContentValues values = new ContentValues(); 
  values.put(KEY_WORD, word.getWord()); values.put(KEY_DEFINITION, word.getDefinition()); db.update(TABLE_WORDS, values, KEY_ID, new String [] {String.valueOf(word.getID())}); 

Может ли кто-нибудь сказать мне, почему он только создает новую строку вместо изменения строки под заданным ID?

Solutions Collecting From Web of "SQLite запрос на обновление Android"

 SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); values.put(KEY_DATE, contact.getDate()); // updating row return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", new String[] { String.valueOf(contact.getID()) }); 
  String id = "1"; SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NOTIFICATION_STATUS,"canceled"); db.update(TABLE_NOTIFICATION, values,COLUMN_NOTIFICATION_ID + " = ? ",new String[]{ String.valueOf(id) }); 

Он будет работать в качестве подготовленного заявления. Этот кусок кода работал в моем случае .. Спасибо

@Digvesh имеет правильную идею, но из-за этого ограничения преобразование int в String для использования в качестве аргумента выбора не будет работать должным образом. Вместо этого сделайте следующее:

 // assume: SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_WORD, word.getWord()); values.put(KEY_DEFINITION, word.getDefinition()); int rowsUpdated = db.update(TABLE_WORDS, values, KEY_ID + "=" + word.getID(), null); 

Используйте LIKE вместо = operator.

 SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, contact.getName()); values.put(KEY_DATE, contact.getDate()); // updating row return db.update(TABLE_CONTACTS, values, KEY_ID + " LIKE ?", new String[] { String.valueOf(contact.getID()) }); 

Используйте эту ссылку, это поможет вам об обновлении запроса в базе данных SQLite

Вы можете попробовать это с помощью db.rawQuery , т.е.

 db.rawQuery("UPDATE "+ TABLE_WORDS + " SET "+ KEY_WORD + " = '"+word.getWord()+"' ,"+KEY_DEFINITION+"= '"+word.getDefinition()+ "' WHERE " + KEY_ID + " = "+word.getID(), null); 

Здесь вам не нужно создавать ContentValues .

Здесь и здесь подробности