android - Select Statement not working properly -


i have application consisting of 2 buttons , text view.

  • btninsert : when user clicks this, insert statement performed

  • btnshow : select statement executed , result displayed in textview.

the problem following. using asynctask perform write / read operations. created 2 separate asynctasks, 1 reading, 1 writing. insert (write async works properly, , sure values getting inserted because if run same insert statement twice primary key violation error:

07-19 11:46:48.080: e/androidruntime(21486): fatal exception: main 07-19 11:46:48.080: e/androidruntime(21486): android.database.sqlite.sqliteconstraintexception: primary key must unique (code 19) 

this problem arises. performed properly, apparently, when run select statement ( clicking button), instead of value, com.example.testdb.mainactivity$select@4203e900.

does know problem is? annoying, not know doing wrong. please have @ code:

public class mainactivity extends activity  { static databaseimplementation db; static sqlitedatabase dbwrite; static sqlitedatabase dbread;  static string insert = "insert tbl_test values(7, 'test');"; static string select = "select test tbl_test _id = 1;";  button btninsert; button btnshow; static textview txtview;  //static string name = "";   @override public void oncreate(bundle savedinstancestate)  {     super.oncreate(savedinstancestate);     setcontentview(r.layout.main);      db = new databaseimplementation(this);     dbwrite = db.getwritabledatabase();     dbread = db.getreadabledatabase();      txtview = (textview)findviewbyid(r.id.txtview);      btninsert = (button)findviewbyid(r.id.btninsert);     btninsert.setonclicklistener(new view.onclicklistener()      {         @override         public void onclick(view v)         {             new insert().execute();         }     });      btnshow = (button)findviewbyid(r.id.btnshow);     btnshow.setonclicklistener(new view.onclicklistener() {          @override         public void onclick(view v)          {              asynctask<string, void, string> n = new select().execute();              txtview.settext(n.tostring());         }     });   }  @override public boolean oncreateoptionsmenu(menu menu) {     getmenuinflater().inflate(r.menu.main, menu);     return true; }  //insert async private class insert extends asynctask<string, void, string> {            @override     protected string doinbackground(string... params)     {          //connect database first.         try         {                    //string insert = executeinsert();             //onpostexecute(insert);         }         catch (exception e)         {             e.printstacktrace();         }         return null;     }      @override     protected void onpostexecute(string result)      {          //connect database first.         dbwrite.execsql(insert);     }   }  //select async private class select extends asynctask<string, void, string> {     @override     protected string doinbackground(string... params)     {         try         {             dbwrite = db.getwritabledatabase();             cursor c = dbwrite.rawquery(select, null);              string name = "";             c.movetofirst();             name = c.getstring(0);              return name;          }         catch (exception e)         {             e.printstacktrace();         }         return null;     }      @override     protected void onpostexecute(string result)      {      }    } 

}

i appreciate if me.

that has nothing database 2 lines:

asynctask<string, void, string> n = new select().execute(); txtview.settext(n.tostring()); 

variable n of tyoe asynctask, , applying tostring() on therefore gives name of class described (com.example.testdb.mainactivity$select@4203e900).

what got is, change onpostexecute() method of select class this:

@override protected void onpostexecute(string result)  {     txtview.settext(result); }  

and remove line txtview.settext(n.tostring()); onclick handler.


Comments