android - How do I save two sets of information in different tables in the same SQLite Database? -


i'm working on budgeting app , ask user add income , expenses , have sum of 2 sets of data in overview activity. researched online , found putting values 2 different tables best way.(if have other ideas please tell me.)
how put income , expense on different tables , how link them sum?
have completed saving data expense in 1 table not know how make table income. forgive me not knowing best way because new using sqlite.

add_expense.java

import android.content.intent; import android.os.bundle; import android.support.design.widget.floatingactionbutton; import android.support.design.widget.snackbar; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.view.view; import android.widget.adapterview; import android.widget.arrayadapter; import android.widget.edittext; import android.widget.spinner; import android.widget.toast;    public class add_expense extends appcompatactivity {      databasehelper mydbexpense;     edittext editamountexpense, editdateexpense, editnotesexpense;       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_add_expense);         toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar_expense);         setsupportactionbar(toolbar);         getsupportactionbar().settitle("add expense");         toolbar.setnavigationicon(getresources().getdrawable(r.drawable.ic_back));         getsupportactionbar().setdisplayhomeasupenabled(true);          mydbexpense = new databasehelper(this);          editamountexpense = (edittext) findviewbyid(r.id.amount_expense);         editdateexpense = (edittext) findviewbyid(r.id.date_expense);         editnotesexpense = (edittext) findviewbyid(r.id.notes_expense);         adddata();           spinner spinner;         arrayadapter<charsequence> adapter;          spinner = (spinner) findviewbyid(r.id.categorydropdown_expense);         adapter = arrayadapter.createfromresource(this, r.array.expensecategory_array, android.r.layout.simple_spinner_item);         adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item);         spinner.setadapter(adapter);         spinner.setonitemselectedlistener(new adapterview.onitemselectedlistener() {             @override             public void onitemselected(adapterview<?> parent, view view, int position, long id) {                 toast.maketext(getbasecontext(), parent.getitematposition(position) + " selected category", toast.length_long).show();             }              @override             public void onnothingselected(adapterview<?> parent) {              }         });          toolbar.setnavigationonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 onbackpressed();             }         });      }      public void adddata(){             floatingactionbutton fab2 = (floatingactionbutton) findviewbyid(r.id.fab_tick_expense);             fab2.setonclicklistener(new view.onclicklistener() {                 @override                 public void onclick(view view) {                     boolean isinserted;                     if (mydbexpense.insertdata(                             editamountexpense.gettext().tostring(),                             editdateexpense.gettext().tostring(),                             editnotesexpense.gettext().tostring())) {                         isinserted = true;                         intent intent=new intent(add_expense.this,mainactivity.class);                         startactivity(intent);                     }                     else isinserted = false;                     if(isinserted == true)                         toast.maketext(add_expense.this,"data inserted",toast.length_long).show();                     else                         toast.maketext(add_expense.this,"data not inserted",toast.length_long).show();                 }             });          }     } 

the same has been done create add_income.java.

databasehelper.java

import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.view.view;  public class databasehelper extends sqliteopenhelper {     private static final string tag = "databasehelper";      public static final string database_name = "expense.db";     public static final string table_name = "expense_table";     public static final string col_1 = "id";     public static final string col_2 = "amount";     public static final string col_3 = "date";     public static final string col_4 = "notes";      public databasehelper(context context) {         super(context, database_name, null, 3);     }      @override     public void oncreate(sqlitedatabase db) {         db.execsql("create table " + table_name + " (id integer primary key autoincrement,amount integer,date integer,notes text)");     }      @override     public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {         db.execsql("drop table if exists " + table_name);         oncreate(db);     }      public boolean insertdata(string amount, string date, string notes) {         sqlitedatabase db = this.getwritabledatabase();         contentvalues contentvalues = new contentvalues();         contentvalues.put(col_2, amount);         contentvalues.put(col_3, date);         contentvalues.put(col_4, notes);         long result = db.insert(table_name, null, contentvalues);         if (result == -1)             return false;         else             return true;     }      public cursor getdata() {         sqlitedatabase db = this.getwritabledatabase();         cursor res = db.rawquery("select * " + table_name, null);         return res;     }      public cursor getitemid(string name){         sqlitedatabase db = this.getwritabledatabase();         string query = "select " + col_1 + " " + table_name + " " + col_2 + " = '" + name + "'";         cursor data = db.rawquery(query, null);         return data;     }      public boolean updatedata(string id, string amount, string date, string notes) {         sqlitedatabase db = this.getwritabledatabase();         contentvalues contentvalues = new contentvalues();         contentvalues.put(col_1, id);         contentvalues.put(col_2, amount);         contentvalues.put(col_3, date);         contentvalues.put(col_4, notes);         db.update(table_name, contentvalues, "id = ?", new string[]{id});         return true;     }      public integer deletedata(string id) {         sqlitedatabase db = this.getwritabledatabase();         return db.delete(table_name, "id = ?", new string[]{id});     }   } 

either create 2 tables in oncreate method of databasehelper class , handle insert/read accordingly. or if want use single table, use negative values expenses , positive value income.

there number ways handle this. need design , decide how implement it.


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -