Getting error while executing getwritabledatabase() in android -


i have created 1 class database , multiple classes tables , multiple activity classess works fine when use database class instance in activity class @ same time when use database class instance in table class , run application control goes getwritabledatabase getting exception , application exited, below code 3 classes.

database class.

public class database extends sqliteopenhelper{      private static  string dbname="manager";     private static int dbversion=2;     sqlitedatabase db;      public database(context context) {          super(context, dbname, null, dbversion);         // todo auto-generated constructor stub         db=this.getwritabledatabase();     }      @override     public void oncreate(sqlitedatabase db) {         // todo auto-generated method stub         stocktable st=new stocktable();         db.execsql(st.stocktable);         }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {         // todo auto-generated method stub      }  } 

activity class

public class stockmanager extends activity{      string getentry=null;     database d=new database(this);     stocktable st=new stocktable();       protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.stockmanager);      final button addstock=(button) findviewbyid(r.id.button1);         final edittext entry=(edittext) findviewbyid(r.id.edittext1);         final button brodetail=(button) findviewbyid(r.id.button2);          addstock.setonclicklistener(new onclicklistener() {              @override             public void onclick(view v) {                 // todo auto-generated method stub                 getentry=entry.gettext().tostring();                 d.db.insert(st.tablename, null,st.insert());               }         });                 } } 

table class

    public class stocktable {      context c1;     database d1=new database(c1);     final string tablename="stocktable";     private string column1="stock_id";     private string column2="stockname";       final string stocktable = "create table " + tablename +                  " (" + column1+ " integer primary key , " + column2 + " text) ";      public contentvalues insert(){  string select="select stockid stocktable";  d.db.execsql(select);         contentvalues cvi=new contentvalues();         for(int i=0;i<=sm.getentry.length();i++)         {             cvi.put(column1, 1);             cvi.put(column2,sm.getentry);                         }          return cvi;     }      public void delete(){       } 

first when control goes getwritabledatabase of database class activity class executing after when control stock table class goes database class , executes getwritabledatabase exception occurred, unfortunately unable paste exceptions here.

can please me solve ?

logcat

02-07 10:06:09.624: d/libegl(10756): loaded /system/lib/egl/libegl_genymotion.so 02-07 10:06:09.628: d/(10756): hostconnection::get() new host connection established 0xb87f5e00, tid 10756 02-07 10:06:09.720: d/libegl(10756): loaded /system/lib/egl/libglesv1_cm_genymotion.so 02-07 10:06:09.748: d/libegl(10756): loaded /system/lib/egl/libglesv2_genymotion.so 02-07 10:06:10.024: w/egl_genymotion(10756): eglsurfaceattrib not implemented 02-07 10:06:10.044: e/openglrenderer(10756): getting max_texture_size gradiencache 02-07 10:06:10.196: e/openglrenderer(10756): getting max_texture_size caches::initconstraints() 02-07 10:06:10.212: d/openglrenderer(10756): enabling debug mode 0 02-07 10:07:17.328: w/egl_genymotion(10756): eglsurfaceattrib not implemented 02-07 10:07:19.820: i/choreographer(10756): skipped 36 frames!  application may doing work on main thread. 02-07 10:07:22.556: w/egl_genymotion(10756): eglsurfaceattrib not implemented 02-07 10:07:22.788: i/choreographer(10756): skipped 44 frames!  application may doing work on main thread. 02-07 10:07:28.064: d/dalvikvm(10756): gc_for_alloc freed 105k, 1% free 16944k/17072k, paused 37ms, total 40ms 02-07 10:07:30.524: i/system.out(10756): asdfdw 02-07 10:07:30.576: d/androidruntime(10756): shutting down vm 02-07 10:07:30.612: w/dalvikvm(10756): threadid=1: thread exiting uncaught exception (group=0xa4b6e648) 02-07 10:07:30.652: e/androidruntime(10756): fatal exception: main 02-07 10:07:30.652: e/androidruntime(10756): android.database.sqlite.sqliteexception: unknown error (code 0): queries can performed using sqlitedatabase query or rawquery methods only. 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqliteconnection.nativeexecuteforchangedrowcount(native method) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqliteconnection.executeforchangedrowcount(sqliteconnection.java:734) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqlitesession.executeforchangedrowcount(sqlitesession.java:754) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqlitestatement.executeupdatedelete(sqlitestatement.java:64) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqlitedatabase.executesql(sqlitedatabase.java:1674) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.database.sqlite.sqlitedatabase.execsql(sqlitedatabase.java:1603) 02-07 10:07:30.652: e/androidruntime(10756):    @ com.example.portfoliomanager.stocktable.insert(stocktable.java:43) 02-07 10:07:30.652: e/androidruntime(10756):    @ com.example.portfoliomanager.stockmanager$1.onclick(stockmanager.java:36) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.view.view.performclick(view.java:4240) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.view.view$performclick.run(view.java:17721) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.os.handler.handlecallback(handler.java:730) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.os.handler.dispatchmessage(handler.java:92) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.os.looper.loop(looper.java:137) 02-07 10:07:30.652: e/androidruntime(10756):    @ android.app.activitythread.main(activitythread.java:5103) 02-07 10:07:30.652: e/androidruntime(10756):    @ java.lang.reflect.method.invokenative(native method) 02-07 10:07:30.652: e/androidruntime(10756):    @ java.lang.reflect.method.invoke(method.java:525) 02-07 10:07:30.652: e/androidruntime(10756):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:737) 02-07 10:07:30.652: e/androidruntime(10756):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:553) 02-07 10:07:30.652: e/androidruntime(10756):    @ dalvik.system.nativestart.main(native method) 02-07 10:07:34.288: i/process(10756): sending signal. pid: 10756 sig: 9 02-07 10:07:36.624: d/libegl(10871): loaded /system/lib/egl/libegl_genymotion.so 02-07 10:07:36.644: d/(10871): hostconnection::get() new host connection established 0xb87f5e70, tid 10871 02-07 10:07:36.784: d/libegl(10871): loaded /system/lib/egl/libglesv1_cm_genymotion.so 02-07 10:07:36.784: d/libegl(10871): loaded /system/lib/egl/libglesv2_genymotion.so 02-07 10:07:37.104: w/egl_genymotion(10871): eglsurfaceattrib not implemented 02-07 10:07:37.108: e/openglrenderer(10871): getting max_texture_size gradiencache 02-07 10:07:37.132: e/openglrenderer(10871): getting max_texture_size caches::initconstraints() 02-07 10:07:37.132: d/openglrenderer(10871): enabling debug mode 0 

error because trying access database null context. need initialize c1 before passing database constructor.

i edit stocktable.java try this

import android.content.contentvalues; import android.content.context;  public class stocktable {      context c1;     database d1;     final string tablename = "stocktable";     private string column1 = "stock_id";     private string column2 = "stockname";      final string stocktable = "create table " + tablename + " (" + column1 + " integer primary key , " + column2 + " text) ";       public stocktable(context mcontext){         c1= mcontext;         d1= new database(c1);     }     public contentvalues insert() {           contentvalues cvi = new contentvalues();         (int = 0; <= sm.getentry.length(); i++) {             cvi.put(column1, 1);             cvi.put(column2, sm.getentry);         }          return cvi;     }      public void delete() {      } } 

how use?

public class stockmanager extends activity {      string getentry = null;     database d;     stocktable st;      protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.stockmanager);          d = new database(this.getapplicationcontext());         st = new stocktable(this.getapplicationcontext());          final button addstock = (button) findviewbyid(r.id.button1);         final edittext entry = (edittext) findviewbyid(r.id.edittext1);         final button brodetail = (button) findviewbyid(r.id.button2);          addstock.setonclicklistener(new onclicklistener() {              @override             public void onclick(view v) {                 // todo auto-generated method stub                 getentry = entry.gettext().tostring();                 d.db.insert(st.tablename, null, st.insert());              }         });     } } 

update database class

public class database extends sqliteopenhelper {      private static string dbname = "manager";     private static int dbversion = 2;     sqlitedatabase db;     private context mcontext;      public database(context context) {          super(context, dbname, null, dbversion);         // todo auto-generated constructor stub         mcontext = context;         db = this.getwritabledatabase();     }      @override     public void oncreate(sqlitedatabase db) {         // todo auto-generated method stub         stocktable st = new stocktable(mcontext);         db.execsql(st.stocktable);     }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {         // todo auto-generated method stub      }  } 

Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -