android - Having problems with inserting data into sqlite as new details are replacing all other rows with the newly entered details -


im having problems sqlite database, part of application have save users favourite deals inserting them sqlite database. happens new row created details of new favorited deal updates existing rows same details of newly added deal.

i've looked on many sites cannot seem fix it. please me?

below databasehelper class:

public class databasehelper extends sqliteopenhelper{     // database version     private static final int database_version = 1;     // database name     private static final string database_name = "unilife";      // login table name     private static final string table_login = "login";      // login table columns names     private static final string key_id = "id";     private static final string key_name = "name";     private static final string key_email = "email";     private static final string key_username = "username";     private static final string key_user_id = "userid";      public static final string table_deal= "deal";      public static final string key_deal_id = "dealid";     public static final string key_deal_title = "dealtitle";     public static final string key_start_date = "startdate";     public static final string key_expiry_date = "expirydate";     public static final string key_details = "details";     public static final string key_photo = "photo";     public static final string key_deal_vendor_id = "vendorid";      public databasehelper(context context){         super(context, database_name, null, database_version);     }     // create database tables     @override     public void oncreate(sqlitedatabase db){         string loginsql = "create table " + table_login + "("                 + key_id + " integer primary key autoincrement, "                 + key_user_id + " text, "                 + key_name + " text,"                 + key_username + " text,"                 + key_email + " text unique )";         db.execsql(loginsql);         string dealsql = "create table " + table_deal + " ("                 + key_id + " integer primary key, "                 + key_deal_id + " text, "                 + key_deal_title + " text, "                 + key_start_date + " text, "                 + key_expiry_date + " text, "                 + key_details + " text, "                 + key_photo + " text, "                 + key_deal_vendor_id + " text )";         log.i("dbhelper", dealsql);         db.execsql(dealsql);     }      // upgrading database     @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion){         // delete old table         db.execsql("drop table if exists " + table_login);         db.execsql("drop table if exists " + table_deal);         // create tables again         oncreate(db);     }       public void addfavourite(string dealid, string dealtitle, string startdate,                              string expirydate, string details, string photo , `enter code here`string vendorid){         sqlitedatabase db = this.getwritabledatabase();         contentvalues cv = new contentvalues();         cv.put(key_deal_id, dealid);         cv.put(key_deal_title, dealtitle);         cv.put(key_start_date, startdate);         cv.put(key_expiry_date, expirydate);         cv.put(key_details, details);         cv.put(key_photo, photo);         cv.put(key_deal_vendor_id, vendorid);         log.i("dbhelper", dealtitle);         db.insert(table_deal, null, cv);         db.close();     }     public arraylist<hashmap<string, string>> getfavourites() {        arraylist<hashmap<string, string>> allfavourites = new arraylist<hashmap<string, string>>();        hashmap<string, string> favourite = new hashmap<string, string>();        string query = "select * " + table_deal;        sqlitedatabase db = this.getreadabledatabase();        cursor cursor = db.rawquery(query, null);         if (cursor.movetofirst()){        {            favourite.put("dealid", cursor.getstring(1));            favourite.put("dealtitle", cursor.getstring(2));            favourite.put("startdate", cursor.getstring(3));            favourite.put("expirydate", cursor.getstring(4));            favourite.put("details", cursor.getstring(5));            favourite.put("photo", cursor.getstring(6));            favourite.put("vendorid", cursor.getstring(7));            allfavourites.add(favourite);        } while (cursor.movetonext());    }         cursor.close();         db.close();         return allfavourites;      }        /*public void removefromfavourites(string dealid){         sqlitedatabase db = this.getwritabledatabase();         db.delete(table_deal, key_deal_id + " = " + dealid , null);         db.close();     }*/      public void removefromfavourites(deal deal){         sqlitedatabase db = this.getwritabledatabase();         db.delete(table_deal, key_id + " = ?" , new string[]{string.valueof(deal.getid())});         db.close();     }  }  

below activity has imagebutton used add deal database. deals original come json request.

public class dealsdetailactivity extends activity  {      string dealid ;     string dealtitle ;     string startdate;     string expirydate ;     string details ;     string dealvendorid ;     string vendorphoto;     public string sdealid;     private databasehelper helper;     private sqlitedatabase db;     private imagebutton favouritesbtn;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.detail_deals);          intent = getintent();          sdealid = i.getstringextra(tag_deal_id);         getpostsforvendor();         dealid = i.getstringextra(tag_deal_id);         dealtitle = i.getstringextra(tag_deal_title);         startdate = i.getstringextra(tag_start_date);         expirydate = i.getstringextra(tag_expiry_date);         details = i.getstringextra(tag_deal_desc);         dealvendorid = i.getstringextra(tag_deal_vendor_id);         vendorphoto = i.getstringextra(tag_vendor_photo);          textview title = (textview)findviewbyid(r.id.deal_details_deal_name);         title.settext(dealtitle);         textview date = (textview)findviewbyid(r.id.deal_details_expiry_date);         date.settext(startdate + " - " + expirydate);         textview desc = (textview)findviewbyid(r.id.deal_details_deal_desc);         desc.settext(details);         final imageview photo = (imageview)findviewbyid(r.id.deal_details_place_pic);         bitmap bitmap = listviewadapter.getbitmapfromurl(vendorphoto);         photo.setimagebitmap(bitmap);          postbtn = (button)findviewbyid(r.id.post_btn);         postbtn.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 intent = new intent(dealsdetailactivity.this, addpostactivity.class);                 i.putextra(tag_deal_id, dealid);                 i.putextra(tag_deal_vendor_id, dealvendorid);                 i.putextra(tag_deal_title, dealtitle);                 i.putextra(tag_vendor_photo, vendorphoto);                 startactivity(i);             }         });         ///////////////////////////////////////////////////////////////////////         // deals added database if //         // favourite button clicked inserted         //         // database                                                 //         // tried insert database directly here        //         // trying insert database method addfavourites//          ///////////////////////////////////////////////////////////////////////         favouritesbtn = (imagebutton)findviewbyid(r.id.deals_details_fav);         favouritesbtn.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                 //set button's appearance                 v.setselected(!v.isselected());                  if (v.isselected()) {                     //handle selected state change                     helper = new databasehelper(getapplicationcontext());                     db = helper.getwritabledatabase();                     contentvalues cv = new contentvalues();                     cv.put(databasehelper.key_deal_id, dealid);                     cv.put(databasehelper.key_deal_title, dealtitle);                     cv.put(databasehelper.key_start_date, startdate);                     cv.put(databasehelper.key_expiry_date, expirydate);                     cv.put(databasehelper.key_details, details);                     cv.put(databasehelper.key_photo, vendorphoto);                     cv.put(databasehelper.key_deal_vendor_id, dealvendorid);                     db.insert(databasehelper.table_deal, null, cv);                     log.e(homeactivity.tag, "the arraylist output: " + cv);                     helper.close();                     db.close();                      toast.maketext(getapplicationcontext(), "deal added favourites", toast.length_long).show();                 } else {                     //handle de-select state change                     helper = new databasehelper(getapplicationcontext());                     helper.getreadabledatabase();                    // helper.removefromfavourites(deal);                     toast.maketext(getapplicationcontext(), "deal removed favourites", toast.length_long).show();                  }              }         });      } 

could please because can't seem figure out im going wrong. used databases before in same way , has never happened before.

thank in advance :)

i think problem in getfavorites. you're not reinitializing map in loop.

public arraylist<hashmap<string, string>> getfavourites() {     arraylist<hashmap<string, string>> allfavourites = new arraylist<hashmap<string, string>>();     string query = "select * " + table_deal;     sqlitedatabase db = this.getreadabledatabase();     cursor cursor = db.rawquery(query, null);      if (cursor.movetofirst()) {         {             hashmap<string, string> favourite = new hashmap<string, string>();             favourite.put("dealid", cursor.getstring(1));             favourite.put("dealtitle", cursor.getstring(2));             favourite.put("startdate", cursor.getstring(3));             favourite.put("expirydate", cursor.getstring(4));             favourite.put("details", cursor.getstring(5));             favourite.put("photo", cursor.getstring(6));             favourite.put("vendorid", cursor.getstring(7));             allfavourites.add(favourite);         } while (cursor.movetonext());     }      cursor.close();     db.close();      return allfavourites; } 

Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -