java - In ActiveAndroid Is it possible to update a specific field in a table row without wiping out the rest of the data in the row -
activeandroid:
i need push updates specific table fields without wiping out existing data in row if dont happen save() data fields each time.
for example:
i have table named 'user' contains following fields:
extsrc | extid | email | firstname | lastname | role | photo | userid | verified
if save data fields except 'verified' , later need update verified field - possible?
currently when use code below, fields except userid (which have stored locally) , verified populated, other fields cleared. @ time have verified value need update dont have additional user data push / save() need update specific 'verified' field when userid matches userid in user table , leave other fields user are.
my code:
model:
// define table name @table(name = "user") public class user extends model { // define table columns @column(name = "extsrc") public string extsrc; @column(name = "extid") public string extid; @column(name = "email") public string email; @column(name = "firstname") public string firstname; @column(name = "lastname") public string lastname; @column(name = "role") public string role; @column(name = "photo") public string photo; @column(name = "userid", unique = true, onuniqueconflict = column.conflictaction.replace) public string userid; @column(name = "verified") public string verified; } controller: public class useradapter implements jsondeserializer { @override public user deserialize(jsonelement arg0, type arg1, jsondeserializationcontext arg2) throws jsonparseexception { user u = new user(); log.v("user", u.tostring()); jsonobject j = (jsonobject) arg0; log.v("j", j.tostring()); if(j.has("extsrc")) { u.extsrc = j.get("extsrc").getasstring(); log.v("extsrc", u.extsrc); } else { log.v("extsrc", "does not exist"); } if(j.has("extid")) { u.extid = j.get("extid").getasstring(); log.v("extid", u.extid); } else { log.v("extid", "does not exist"); } if(j.has("email")) { u.email = j.get("email").getasstring(); log.v("email", u.email); } else { log.v("email", "does not exist"); } if(j.has("firstname")) { u.firstname = j.get("firstname").getasstring(); log.v("firstname", u.firstname); } else { log.v("firstname", "does not exist"); } if(j.has("lastname")) { u.lastname = j.get("lastname").getasstring(); log.v("lastname", u.lastname); } else { log.v("lastname", "does not exist"); } if(j.has("role")) { u.role = j.get("role").getasstring(); log.v("role", u.role); } else { log.v("role", "does not exist"); } if(j.has("photo")) { u.photo = j.get("photo").getasstring(); log.v("photo", u.photo); } else { log.v("photo", "does not exist"); } if(j.has("userid")) { u.userid = j.get("userid").getasstring(); log.v("userid", u.userid); } else { log.v("userid", "does not exist"); } if(j.has("verified")) { u.userid = spontlyapplication.prefs_user_id; u.verified = j.get("verified").getasstring(); log.v("verified", u.verified); } else { u.verified = "true"; log.v("verified", "does not exist"); } u.save(); } thanks.
if want update existing user in database, need retrieve first database , update fields before calling save();
something like:
user user = new select().from(user.class).where("userid = ?", useridyouwanttoretrieve).executesingle(); if (user != null){ user.setverified(true); } else { user = new user(){//populate new user here json } } user.save(); this keep users values stored in database , update new values want.
Comments
Post a Comment