android - SQLite database is empty after first loading -


when create db , insert items inside , after try read it empty, in first start of app, there anyway refresh db or reload after insert new item. want read from first start, not second.

here code:

public class dbhelper extends sqliteopenhelper {      protected sqlitedatabase database;      public dbhelper(context context) {         super(context, dbconstants.db_name, null, dbconstants.db_version);         open();     }      public void insertmuseum(museum museum) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_id, museum.getid());         cv.put(dbconstants.key_url, museum.getimageurl());         cv.put(dbconstants.key_description, museum.getdescription());         cv.put(dbconstants.key_location, museum.getlocation());         cv.put(dbconstants.key_name, museum.getname());         cv.put(dbconstants.key_map_status, museum.getmapstatus());         cv.put(dbconstants.key_map_size, museum.getmapsizekb());          database.insert(dbconstants.db_table_museums, null, cv);     }      public void insertroom(room room) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_id, room.getid());         (door door : room.getdoors()) {             cv.put(dbconstants.key_doors, door.getconnectedto());         }         cv.put(dbconstants.key_map_id, room.getmapid());         (qr qr : room.getqrs()) {             cv.put(dbconstants.key_qrs, qr.getid());         }         (mappoint point : room.getshape()) {             cv.put(dbconstants.key_shape, point.getx());         }         database.insert(dbconstants.db_table_rooms, null, cv);     }      public void insertmap(museummap map) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_id, map.getid());         (room room : map.getrooms()) {             cv.put(dbconstants.key_room_id, room.getid());         }         cv.put(dbconstants.key_museum_id, map.getmuseumid());         cv.put(dbconstants.key_entrance_room_id, map.getentranceroomid());         database.insert(dbconstants.db_table_maps, null, cv);     }      public void insertdoor(door door) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_connected_to, door.getconnectedto());         cv.put(dbconstants.key_x, door.getx());         cv.put(dbconstants.key_y, door.gety());         cv.put(dbconstants.key_map_id, door.getmapid());         cv.put(dbconstants.key_room_id, door.getroomid());         cv.put(dbconstants.key_id, door.getid());         database.insert(dbconstants.db_table_doors, null, cv);     }      public void insertshape(mappoint point) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_x, point.getx());         cv.put(dbconstants.key_y, point.gety());         cv.put(dbconstants.key_map_id, point.getmapid());         cv.put(dbconstants.key_id, point.getid());         cv.put(dbconstants.key_room_id, point.getroomid());         database.insert(dbconstants.db_table_shape, null, cv);     }      public void insertqr(qr qr) {         contentvalues cv = new contentvalues();         cv.put(dbconstants.key_id, qr.getid());         cv.put(dbconstants.key_info, qr.getinfo());         cv.put(dbconstants.key_x, qr.getx());         cv.put(dbconstants.key_y, qr.gety());         cv.put(dbconstants.key_map_id, qr.getmapid());         cv.put(dbconstants.key_room_id, qr.getroomid());         database.insert(dbconstants.db_table_qrs, null, cv);     }      private void open() {         database = this.getwritabledatabase();     }      @override     public void oncreate(sqlitedatabase db) {         db.execsql(createmuseumtable());         db.execsql(createmaptable());         db.execsql(createroomstable());         db.execsql(createqrstable());         db.execsql(createdoorstable());         db.execsql(createshapetable());     }      private string createdoorstable() {         return "create table if not exists " + dbconstants.db_table_doors + " (_id integer primary key autoincrement, "                 + dbconstants.key_connected_to + " text, "                 + dbconstants.key_map_id + " text, "                 + dbconstants.key_id + " text, "                 + dbconstants.key_room_id + " text, "                 + dbconstants.key_x + " real, "                 + dbconstants.key_y + " real);";     }      private string createshapetable() {         return "create table if not exists " + dbconstants.db_table_shape + " (_id integer primary key autoincrement, "                 + dbconstants.key_x + " real, "                 + dbconstants.key_room_id + " text, "                 + dbconstants.key_map_id + " text, "                 + dbconstants.key_id + " text, "                 + dbconstants.key_y + " real);";     }      private string createroomstable() {         return "create table if not exists " + dbconstants.db_table_rooms + " (_id integer primary key autoincrement, "                 + dbconstants.key_doors + " text, "                 + dbconstants.key_id + " text, "                 + dbconstants.key_shape + " real, "                 + dbconstants.key_map_id + " text, "                 + dbconstants.key_qrs + " text);";     }      private string createmaptable() {         return "create table if not exists " + dbconstants.db_table_maps + " (_id integer primary key autoincrement, "                 + dbconstants.key_room_id + " text, "                 + dbconstants.key_id + " text, "                 + dbconstants.key_museum_id + " int, "                 + dbconstants.key_entrance_room_id + " text);";     }      private string createmuseumtable() {         return "create table if not exists " + dbconstants.db_table_museums + " (_id integer primary key autoincrement, "                 + dbconstants.key_id + " int, "                 + dbconstants.key_description + " text, "                 + dbconstants.key_location + " text, "                 + dbconstants.key_name + " text, "                 + dbconstants.key_url + " text, "                 + dbconstants.key_map_status + " int, "                 + dbconstants.key_map_size + " int);";     }      private string createqrstable() {         return "create table if not exists " + dbconstants.db_table_qrs + " (_id integer primary key autoincrement, "                 + dbconstants.key_info + " text, "                 + dbconstants.key_id + " text, "                 + dbconstants.key_x + " real, "                 + dbconstants.key_map_id + " text, "                 + dbconstants.key_room_id + " text, "                 + dbconstants.key_y + " real);";     }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {          db.execsql("drop table if exists " + dbconstants.db_table_museums);         db.execsql("drop table if exists " + dbconstants.db_table_maps);         db.execsql("drop table if exists " + dbconstants.db_table_rooms);         db.execsql("drop table if exists " + dbconstants.db_table_qrs);         db.execsql("drop table if exists " + dbconstants.db_table_doors);         db.execsql("drop table if exists " + dbconstants.db_table_shape);         oncreate(db);     }      public void museumstatusupdate(int museumid, int mapstatus) {         contentvalues values = new contentvalues();         values.put(dbconstants.key_map_status, mapstatus);         database.update(dbconstants.db_table_museums, values, dbconstants.key_id + "=" + museumid, null);     }      public boolean isempty(string tablename) {         string count = "select count(*) " + tablename;         cursor mcursor = database.rawquery(count, null);         mcursor.movetofirst();         int icount = mcursor.getint(0);         mcursor.close();         return icount <= 0;     }      public void close() {         database.close();     }      public cursor getshapevalues() {         return this.database.query(dbconstants.db_table_shape, new string[]{                         dbconstants.key_x, dbconstants.key_y, dbconstants.key_room_id, dbconstants.key_map_id, dbconstants.key_id},                 null, null, null, null, null);     }      public cursor getdoorvalues() {         return this.database.query(dbconstants.db_table_doors, new string[]{dbconstants.key_connected_to,                         dbconstants.key_map_id, dbconstants.key_room_id, dbconstants.key_id, dbconstants.key_x, dbconstants.key_y},                 null, null, null, null, null);     }      public cursor getqrvalues() {         return this.database.query(dbconstants.db_table_qrs, new string[]{dbconstants.key_id,                 dbconstants.key_info, dbconstants.key_x, dbconstants.key_y, dbconstants.key_map_id,                 dbconstants.key_room_id}, null, null, null, null, null);     }      public cursor getmuseumvalues() {         return this.database.query(dbconstants.db_table_museums, new string[]{dbconstants.key_id,                 dbconstants.key_description, dbconstants.key_location, dbconstants.key_map_status,                 dbconstants.key_name, dbconstants.key_map_size, dbconstants.key_url}                 , null, null, null, null, null);     }      public cursor getroomvalues() {         return this.database.query(dbconstants.db_table_rooms, new string[]{dbconstants.key_id,                 dbconstants.key_doors, dbconstants.key_map_id, dbconstants.key_shape,                 dbconstants.key_qrs}, null, null, null, null, null);     }      public cursor getmapvalues() {         return this.database.query(dbconstants.db_table_maps, new string[]{dbconstants.key_id,                 dbconstants.key_room_id, dbconstants.key_museum_id, dbconstants.key_entrance_room_id}                 , null, null, null, null, null);     } } 

the problem here whe try call cursor.movetofirst() :

public void loadmuseumslist(final downloadlistener listener) {         cursor cursor = dbutils.readmuseumrecord();          if (cursor.movetofirst()) {             {                 museum museum = new museum();                 museum.setimageurl(cursor.getstring(cursor.getcolumnindex(dbconstants.key_url)));                 museum.setdescription(cursor.getstring(cursor.getcolumnindex(dbconstants.key_description)));                 museum.setlocation(cursor.getstring(cursor.getcolumnindex(dbconstants.key_location)));                 museum.setmapsizekb(cursor.getint(cursor.getcolumnindex(dbconstants.key_map_size)));                 museum.setid(cursor.getint(cursor.getcolumnindex(dbconstants.key_id)));                 museum.setname(cursor.getstring(cursor.getcolumnindex(dbconstants.key_name)));                 museum.setmapstatus(cursor.getint(cursor.getcolumnindex(dbconstants.key_map_status)));                  if (!duplicatecheck(museums, museum)) {                     museums.add(museum);                 }             } while (cursor.movetonext());         }         listener.onmuseumlistdownloaded(museums);     } 

it return false.

and before method loading db here:

public void downloadmuseumslist(final downloadlistener listener) {         final boolean isempty = dbutils.isempty();         firebaseref.child("museums").addvalueeventlistener(new valueeventlistener() {             @override             public void ondatachange(datasnapshot datasnapshot) {                 list<museum> museums = new arraylist<>();                  (datasnapshot postmuseum : datasnapshot.getchildren()) {                      museum museum = postmuseum.getvalue(museum.class);                      if (!duplicatecheck(museums, museum)) {                         museums.add(museum);                         dbutils.writemuseumrecord(museum);                     }                 }                 if (isempty){                     listener.onmuseumlistdownloaded(museums);                 }             }              @override             public void oncancelled(firebaseerror firebaseerror) {                 log.e(tag, firebaseerror.tostring());             }         });     } 

this wehre writing records after downloading, db empty after , after restart app db ok.

i found solution! problem recording in db asynchronous , code going on , db empty :)

i changed , ok now:

public void loadcontent(final downloadlistener listener) {          if (dbutils.isempty()) {             firebaseloader.getinstance(context).downloadmuseumslist(new downloadlistener() {                 @override                 public void onmuseumlistdownloaded(list<museum> museums) {                     loadmuseumslist(listener);                 }             });         } else {             firebaseloader.getinstance(context).downloadmuseumslist(listener);             loadmuseumslist(listener);         }     } 

Comments

Popular posts from this blog

sql - invalid in the select list because it is not contained in either an aggregate function -

Angularjs unit testing - ng-disabled not working when adding text to textarea -

How to start daemon on android by adb -