Android SQLite database -


im trying read database display data on activity. going wrong? program crashes when second activity attempts open. debugger indicates cursor problem, dont know issue is.

this databasehelper

public class databasehelper extends sqliteopenhelper { public static final string the_database = "thedatabase"; public static final string the_table = "infotable"; public static final string the_table_column_id = "id"; public static final string the_table_column_name = "name"; public static final string the_table_column_details = "details";  databasehelper(context context) {     super(context,the_database, null, 1); }  @override public void oncreate(sqlitedatabase db) {      db.execsql("create table " +the_table+"(id integer primary key, name     text, details text) "); }  @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {     db.execsql("drop table if exists "+ the_table+ " ");  }  public void adddata(string namein, string detailsin) {     sqlitedatabase db = this.getwritabledatabase();     contentvalues data = new contentvalues();      data.put("name", namein);     data.put("details", detailsin);      db.insert(the_table,null,data);  }  public cursor showdata() {     sqlitedatabase db = this.getreadabledatabase();      cursor cursor;     cursor = db.rawquery("select * "+the_table+"", null);     return cursor;  } } 

this mainactivity

public class mainactivity extends actionbaractivity {  public final static string extra_message =     "com.doors.waynderful.myapp.message"; databasehelper mydb; @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main); }   @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.menu_main, menu);     return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      return super.onoptionsitemselected(item); }  public void sendmessage(view view){     mydb = new databasehelper(this);       intent intent = new intent(this,displaymessageactivity.class);      edittext edittext = (edittext) findviewbyid(r.id.edit_name);     edittext edittext1 = (edittext) findviewbyid(r.id.edit_details);      string name = edittext.gettext().tostring();     string details = edittext1.gettext().tostring();      mydb.adddata(name, details);     startactivity(intent);  } } 

this activity display data database

public class displaymessageactivity extends actionbaractivity { textview tview; databasehelper db;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_display_message);         tview = (textview) findviewbyid(r.id.box);          db = new databasehelper(this);         cursor cursor = db.showdata();         cursor.movetofirst();          string nam = cursor.getstring(cursor.getcolumnindex(db.the_table_column_name));          if (!cursor.isclosed()){             cursor.close();         }      tview.settext(nam);  }   @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.menu_display_message, menu);     return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      return super.onoptionsitemselected(item); } } 

i tried code , seems working. may accessing null pointer or cursor empty. add checking code safe.

if ( cursor != null && cursor.movetofirst()) {       string nam = cursor.getstring(cursor.getcolumnindex(db.the_table_column_name));       tview.settext(nam); }  if (!cursor.isclosed()) {       cursor.close(); }