Reputation: 249
The table contains 4 columns : rowID , word , defintition , group_id
I want to change a certain row's word and definition . So here is my code (word is an object where the word , definition , id and the group_id are stored)
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())});
Can anyone tell me why it only creates a new line instead of changing the row under given ID ?
Upvotes: 10
Views: 32365
Reputation: 678
this work for me, while db.rawquery didnot work.
output query
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;
Upvotes: 1
Reputation: 3434
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) });
it will work as prepared statement. this piece of code worked in my case .. Thanks
Upvotes: 4
Reputation: 4522
You can try this using db.rawQuery
, i.e.
db.rawQuery("UPDATE "+ TABLE_WORDS + " SET "+ KEY_WORD + " = '"+word.getWord()+"' ,"+KEY_DEFINITION+"= '"+word.getDefinition()+ "' WHERE " + KEY_ID + " = "+word.getID(), null);
Here you don't need to create any ContentValues
.
Upvotes: -2
Reputation: 1483
@Digvesh has the right idea, but because of this limitation, converting an int to a String to use as a selection arg will not work properly. Instead do this:
// 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);
Upvotes: 1
Reputation: 2850
Use LIKE instead of = 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()) });
Upvotes: 0
Reputation: 6533
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()) });
Upvotes: 10