java - how to update integer value in sqlite android -


i having problem updation part of below code. insertion working properly. when added update method addition/subtraction of integer stored in database, code no longer working. says app has closed unfortunately. app not opening. please check update method , make sufficient changes.

first used code accept name , email. code changed accept number , email. variable name , column name has not been changed. please dont confused these.

thank you.

mainactivity.java

package com.sqltut;    import android.os.bundle; import android.app.activity; import android.content.intent; import android.database.cursor; import android.view.menu; import android.view.view; import android.widget.button; import android.widget.edittext; import android.widget.toast;  public class mainactivity extends activity {  button save,load,updatebtn; edittext name,email,update; datahandler handler;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     save=(button) findviewbyid(r.id.save);     load=(button) findviewbyid(r.id.load);     name=(edittext) findviewbyid(r.id.name);     email=(edittext) findviewbyid(r.id.email);      save.setonclicklistener(new view.onclicklistener() {          @override         public void onclick(view v) {             // todo auto-generated method stub              string getname=name.gettext().tostring();             string getemail=email.gettext().tostring();              int number = integer.parseint(getname);              handler=new datahandler(getbasecontext());             handler.open();             long id=handler.insertdata(number, getemail);             toast.maketext(getbasecontext(), "data inserted", toast.length_long).show();             handler.close();         }     });      load.setonclicklistener(new view.onclicklistener() {          @override         public void onclick(view v) {             // todo auto-generated method stub             string getemail;             integer getname;             getname=0;             getemail="";             handler=new datahandler(getbasecontext());             handler.open();             cursor c=handler.returndata();             if(c.movetofirst())             {                                 {                 getname=c.getint(0);                     getemail=c.getstring(1);                 }while(c.movetonext());             }             handler.close();             toast.maketext(getbasecontext(), "name:"+getname+" , email:"+getemail,toast.length_long).show();         }     });      updatebtn.setonclicklistener(new view.onclicklistener() {          @override         public void onclick(view arg0) {             // todo auto-generated method stub          int number,flag=0; //flag check addition or subtraction         string getupdate=update.gettext().tostring();         number=integer.parseint(getupdate);         handler=new datahandler(getbasecontext());         handler.open();         handler.updatedata(number,flag);         //subtraction: flag=0, addition: flag=1         handler.close();         }     });      //to call next activity    /* button createappointment = (button)findviewbyid(r.id.next);     createappointment.setonclicklistener(new view.onclicklistener() {          @override         public void onclick(view v) {              // todo auto-generated method stub             intent myintent = new intent(mainactivity.this, page2.class);             mainactivity.this.startactivity(myintent);                     }     }); */  }    @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.main, menu);     return true; }  } 

datahandler.java

package com.sqltut;  import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper;  public class datahandler {  public static final string name="name"; public static final string email="email"; public static final string table_name="mytable"; public static final string data_base_name="mydatabase"; public static final int database_version=1; public static final string table_create="create table mytable(name text not null, email text not null);";  databasehelper dbhelper; context ctx; sqlitedatabase db; public datahandler(context ctx) {      this.ctx = ctx;     dbhelper=new databasehelper(ctx); }  private static class databasehelper extends sqliteopenhelper {     public databasehelper(context ctx)     {         super(ctx,data_base_name,null,database_version);     }       @override     public void oncreate(sqlitedatabase db) {      try{         db.execsql(table_create);      }      catch(sqlexception e)      {          e.printstacktrace();      }      }        @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {         // todo auto-generated method stub          db.execsql("drop table if exists mytable ");          oncreate(db);     }  } public datahandler open() {     db=dbhelper.getwritabledatabase();     return this; }  public void close() {     dbhelper.close(); }  public long insertdata(integer name, string email) {     contentvalues content=new contentvalues();     content.put(name, name);     content.put(email,email);     return db.insert(table_name, null, content);  }  public void updatedata(integer number,integer flag) {     db = dbhelper.getreadabledatabase();     string select = "select name  " + table_name ;     cursor c = db.rawquery(select, null);     int current=0;     if (c.movetofirst()) {         current=  integer.parseint(c.getstring(0));     }     if(flag==0)//subtraction     {         current=current-number;     }     else//addition     {         current=current+number;     }     c.close();     db.close();      db = dbhelper.getreadabledatabase();     contentvalues content=new contentvalues();     content.put(name, current);      db.update(table_name, content,null,null);  }   public cursor returndata() {     return db.query(table_name, new string[] {name,email}, null, null, null, null, null); } } 

edited updatedata()

public void updatedata(integer value,integer flag) {     db = dbhelper.getreadabledatabase();     string selectquery = "select balance  " + table_name ;     cursor cursor = db.rawquery(selectquery, null);     int current = 0;         if (cursor.movetofirst()) {             current=  integer.parseint(cursor.getstring(0));      }     if(flag==0){             current = current-value;     }else {             current = current+value ;      }     cursor.close();     db.close();     try{         db = dbhelper.getwritabledatabase();         string rawquery = "update mytable set balance="+current;         db.rawquery(rawquery, null);         }     catch(exception ex)     {         ex.printstacktrace();     } } 

code worked. db.rawquery(rawquery, null); changed db.execsql(rawquery);

you can update value in table below method:

public void updateinteger(integer newid)     {         try{             sqlitedb = appdb.getwritabledatabase();             string rawquery = "update <table_name> set id="+newid;             sqlitedb.rawquery(rawquery, null);             log.v(tag, "id updated");         }         catch(exception ex)         {             ex.printstacktrace();         }     } 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -