it-roy-ru.com

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

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

Я хочу изменить слово и определение определенной строки. Итак, вот мой код (Word - это объект, в котором хранятся Word, определение, 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())});

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

10
user3199577
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()) });
10
Digvesh Patel
   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) });

это будет работать как подготовленное утверждение . этот кусок кода работал в моем случае .. Спасибо

3
Fazal

эта работа для меня, в то время как db.rawquery не работал.

запрос на вывод 

String qu="UPDATE "+ DATABASE_TABLE_DATA + " SET "+isbookmark+" = "+status+" WHERE id = "+uid+";";
db.execSQL(qu);

output query :
UPDATE tabel_data SET `isbookmark` = 1 WHERE id = 2720271;

1
Muklas

@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);
1
anddev84

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

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()) });
0
Ahmad Raza

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

0
Boopathi