mysql - updating rows instead of creating new entries database android -


i have been working on recipe android recipe book utilize database storing events. current code allows me add new entries unable modify of added entries. need database predefined number of rows(48) functionality of updating these rows through corresponding edittext fields. can me modify following code achieve please? new android coding , need start database.

here mydb file:

package com.cookbook.data;  import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteexception; import android.util.log;  public class mydb {     private sqlitedatabase db;     private final context context;     private final mydbhelper dbhelper;     // initializes mydbhelper instance     public mydb(context c){         context = c;         dbhelper = new mydbhelper(context, constants.database_name, null,                                             constants.database_version);     }     // closes database connection     public void close()     {         db.close();     }     // initializes sqlitedatabase instance using mydbhelper     public void open() throws sqliteexception     {         try {             db = dbhelper.getwritabledatabase();         } catch(sqliteexception ex) {             log.v("open database exception caught", ex.getmessage());             db = dbhelper.getreadabledatabase();         }     }     // saves diary entry database name-value pairs in contentvalues instance     // passes data sqlitedatabase instance insert     public long insertdiary(string title, string content)     {         try{             contentvalues newtaskvalue = new contentvalues();             newtaskvalue.put(constants.title_name,  title);             newtaskvalue.put(constants.content_name, content);             newtaskvalue.put(constants.date_name,     java.lang.system.currenttimemillis());                         return db.insert(constants.table_name,  null, newtaskvalue);         } catch(sqliteexception ex) {             log.v("insert database exception caught",                     ex.getmessage());             return -1;         }     }       // reads diary entries database, saves them in cursor class , returns     method     public cursor getdiaries()     {         cursor c = db.query(constants.table_name, null, null,                             null, null, null, null);         return c;     }  } 

here mydbhelper file:

package com.cookbook.data;   import android.content.context; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqlitedatabase.cursorfactory; import android.database.sqlite.sqliteexception; import android.database.sqlite.sqliteopenhelper; import android.util.log;   public class mydbhelper extends sqliteopenhelper{       private static final string create_table="create table "+     constants.table_name+" ("+     constants.key_id+" integer primary key autoincrement, "+     constants.title_name+" text not null, "+     constants.content_name+" text not null, "+     constants.date_name+" long);";     // database initialization     public mydbhelper(context context, string name, cursorfactory factory,                         int version) {         super(context, name, factory, version);     }      @override     public void oncreate(sqlitedatabase db) {         log.v("mydbhelper oncreate","creating tables");         try {             db.execsql(create_table);         } catch(sqliteexception ex) {             log.v("create table exception", ex.getmessage());         }     }      @override     public void onupgrade(sqlitedatabase db, int oldversion,                             int newversion) {         log.w("taskdbadapter", "upgrading version "+oldversion                                 +" "+newversion                                 +", destroy     old data");         db.execsql("drop table if exists "+constants.table_name);         oncreate(db);     }     } 

here constants file:

package com.cookbook.data;  public class constants {     public static final string database_name="datastorage";     public static final int database_version=1;     public static final string table_name="diaries";     public static final string title_name="title";     public static final string content_name="content";     public static final string date_name="recorddate";     public static final string key_id="_id";     public static final string table_row="row_id"; } 

here diary file creates new entries database:

package com.example.classorganizer;  import android.app.activity; import android.content.intent; import android.database.sqlite.sqlitedatabase; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext;  import com.cookbook.data.mydb; import com.cookbook.data.mydbhelper; public class diary extends activity {     edittext titleet1,contentet1;     edittext titleet2,contentet2;     button submitbt;     mydb dba;      @override     public void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.diary);         dba = new mydb(this);         dba.open();         titleet1 = (edittext)findviewbyid(r.id.diary1);         contentet1 = (edittext)findviewbyid(r.id.diarycontenttext1);         titleet2 = (edittext)findviewbyid(r.id.diary2);         contentet2 = (edittext)findviewbyid(r.id.diarycontenttext2);         submitbt = (button)findviewbyid(r.id.submitbutton);         submitbt.setonclicklistener(new onclicklistener() {             public void onclick(view v) {                 try {                     saveittodb();                 } catch (exception e) {                     e.printstacktrace();                 }             }           });     }        public void saveittodb() {         dba.insertdiary(titleet1.gettext().tostring(),     contentet1.gettext().tostring());         dba.insertdiary(titleet2.gettext().tostring(),     contentet2.gettext().tostring());         dba.close();         titleet1.settext("");         contentet1.settext("");         titleet2.settext("");         contentet2.settext("");         intent = new intent(diary.this, displaydiaries.class);         startactivity(i);     }     /** called when user clicks button */     public void visitmonday(view view) {         intent intent = new intent(this, monday.class);         startactivity(intent);     } } 

and here displaydiaries file returns created diaries in listview:

package com.example.classorganizer;   import java.util.date; import java.text.dateformat; import java.util.arraylist;  import android.app.listactivity; import android.content.context; import android.content.intent; import android.database.cursor; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.baseadapter; import android.widget.textview;  import com.cookbook.data.constants; import com.cookbook.data.mydb;     public class displaydiaries extends listactivity {     mydb dba;     diaryadapter myadapter;     private class mydiary{         public mydiary(string t, string c, string r){             title=t;             content=c;             recorddate=r;          }         public string title;         public string content;         public string recorddate;     }     @override     protected void oncreate(bundle savedinstancestate) {         dba = new mydb(this);         dba.open();         setcontentview(r.layout.diaries);          super.oncreate(savedinstancestate);         myadapter = new diaryadapter(this);         this.setlistadapter(myadapter);     }      private class diaryadapter extends baseadapter {         private layoutinflater minflater;         private arraylist<mydiary> diaries;         public diaryadapter(context context) {             minflater = layoutinflater.from(context);             diaries = new arraylist<mydiary>();             getdata();         }          public void getdata(){             cursor c = dba.getdiaries();             startmanagingcursor(c);             if(c.movetofirst()){                 do{                     string title =                             c.getstring(c.getcolumnindex(constants.title_name));                     string content =                             c.getstring(c.getcolumnindex(constants.content_name));                     dateformat dateformat =                             dateformat.getdatetimeinstance();                     string datedata = dateformat.format(new                             date(c.getlong(c.getcolumnindex(                                     constants.date_name))).gettime());                     mydiary temp = new mydiary(title,content,datedata);                     diaries.add(temp);                 } while(c.movetonext());             }         }          @override         public int getcount() {return diaries.size();}         public mydiary getitem(int i) {return diaries.get(i);}         public long getitemid(int i) {return i;}         public view getview(int arg0, view arg1, viewgroup arg2) {             final viewholder holder;             view v = arg1;             if ((v == null) || (v.gettag() == null)) {                 v = minflater.inflate(r.layout.diaryrow, null);                 holder = new viewholder();                 holder.mtitle = (textview)v.findviewbyid(r.id.name);                 holder.mdate = (textview)v.findviewbyid(r.id.datetext);                  v.settag(holder);             } else {                 holder = (viewholder) v.gettag();             }              holder.mdiary = getitem(arg0);             holder.mtitle.settext(holder.mdiary.title);             holder.mdate.settext(holder.mdiary.recorddate);              v.settag(holder);              return v;         }          public class viewholder {             mydiary mdiary;             textview mtitle;             textview mdate;          }      }     /** called when user clicks button */     public void visitdiary(view view) {         intent intent = new intent(this, diary.class);         startactivity(intent);     } } 

as mentioned before, code when run allows creation new diaries , puts them in listview. need modify code database has predefined 48 rows (with default empty content) , diary file allows modify rows through corresponding 48 edittext fields. above appreciated. forward learning you. cheers, patrick

edit--------------------------------------------------------------------------------------

since absolute beginner still having problem creating default 48 rows in table , writing code updating each row corresponding edittext. maybe there helpful soul figure out me?

edit 2 -----------------------------------------------------------------------------------

i have updated mydbhelper oncreate method code this:

@override     public void oncreate(sqlitedatabase db) {         log.v("mydbhelper oncreate","creating tables");          contentvalues cv=new contentvalues();         cv.put(constants.key_id, 1);         cv.put(constants.title_name,  "my app");         db.insert( constants.table_name, null, cv);          string updatetable= "update" + constants.table_name +                  "set" + constants.content_name + " = " + 1 +                  "where" +constants.key_id +" = " + r.id.diary1;          try {             db.execsql(create_table);         } catch(sqliteexception ex) {             log.v("create table exception", ex.getmessage());         }     } 

but upon diary's oncreate new row created instead of updating existing rows... doing wrong here? believe put code in wrong place or missed else...

i not sure how manuplate 48 edit text below example give idea of writing update query.

string updatetable= "update " + constants.table_name  + "set " + constants.content_name + " = " + value + "where " +constants.key_id +" = " + <<may edit text value>> + 

write above query want update values

edit--------------------------------------------------------------------------------------------

first thing need have data on should rows contain, have multiple ways insert data data.

  1. using content values

    contentvalues cv=new contentvalues(); cv.put(constants.key_id, 1); cv.put(constants.title_name, "my app"); db.insert( constants.table_name,null,cv);

  2. write query above (update query) , use of methods rawquery, execsql

    db.rawquery(<<your insert query>>,null)

in same way execsql aswell

to more info check android documention avaialable. link


Comments

Popular posts from this blog

PHPMotion implementation - URL based videos (Hosted on separate location) -

javascript - Using Windows Media Player as video fallback for video tag -

c# - Unity IoC Lifetime per HttpRequest for UserStore -