database - Problem with SQLite DB for Android -
database - Problem with SQLite DB for Android -
i new android , have been next tutorials create app. having much difficulty inserting info database. have tried can think of no avail. database class is:
package com.mckallip.beeronthewall; import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.util.log; public class databaseutil{ private static final string tag = "databaseutil"; /** * database name */ private static final string database_name = "beer_database"; /** * database version */ private static final int database_version = 1; /** * table name */ private static final string database_table = "beer_list"; /** * table columns */ public static final string key_beer_name = "beer_name"; public static final string key_beer_style = "beer_style"; public static final string key_brewery = "beer_brewery"; public static final string key_abv = "beer_abv"; public static final string key_beer_score = "beer_score"; public static final string key_beer_image = "beer_image"; public static final string key_beer_comments = "beer_comments"; public static final string key_rowid = "_id"; /** * database creation sql statement */ private static final string create_beer_table = "create table " + database_table + " (" + key_rowid + " integer primary key autoincrement, " + key_beer_name + " text, " + key_beer_style + " text, " + key_brewery + " text, " + key_abv + " text, " + key_beer_score + "text, " + key_beer_image + " text, " + key_beer_comments + "text );"; /** * context */ private final context mctx; private databasehelper mdbhelper; private sqlitedatabase mdb; /** * inner private class. database helper class creating , updating database. */ private static class databasehelper extends sqliteopenhelper { databasehelper(context context) { super(context, database_name, null, database_version); } /** * oncreate method called 1st time when database doesn't exists. */ @override public void oncreate(sqlitedatabase db) { log.i(tag, "creating database: " + create_beer_table); db.execsql(create_beer_table); } /** * onupgrade method called when database version changes. */ @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { log.w(tag, "upgrading database version " + oldversion + " " + newversion); } } protected sqlitedatabase getdatabase(){ homecoming mdb; } /** * constructor - takes context allow database * opened/created * * @param ctx context within work */ public databaseutil(context ctx) { this.mctx = ctx; } /** * method used creating/opening connection * @return instance of databaseutil * @throws sqlexception */ public databaseutil open() throws sqlexception { mdbhelper = new databasehelper(mctx); mdb = mdbhelper.getwritabledatabase(); homecoming this; } /** * method used closing connection. */ public void close() { mdbhelper.close(); } /** * method used create/insert new record beer record. * @param sbeer_name * @param sbeer_style * @param sbeer_score * @param sbrewery * @param sabv * @param simageloc * @param scomments * @return long */ public long createbeer(string beer_name, string beer_style, string beer_score, string brewery, string abv, string imageloc, string comments) { contentvalues initialvalues = new contentvalues(); initialvalues.put(key_beer_name, beer_name); initialvalues.put(key_beer_style, beer_style); initialvalues.put(key_brewery, brewery); initialvalues.put(key_abv, abv); initialvalues.put(key_beer_score, beer_score); initialvalues.put(key_beer_image, imageloc); initialvalues.put(key_beer_comments, comments); homecoming mdb.insert(database_table, null, initialvalues); } /** * method delete beer record. * @param rowid * @return boolean */ public boolean deletebeer(long rowid) { homecoming mdb.delete(database_table, key_rowid + "=" + rowid, null) > 0; } /** * method homecoming cursor holding beer records. * @return cursor */ public cursor fetchallbeers() { homecoming mdb.query(database_table, new string[] {key_rowid, key_beer_name, key_beer_style, key_brewery, key_abv, key_beer_score, key_beer_image, key_beer_comments}, null, null, null, null, null); } /** * method homecoming cursor holding specific beer record. * @param id * @return cursor * @throws sqlexception */ public cursor fetchbeer(long id) throws sqlexception { cursor mcursor = mdb.query(true, database_table, new string[] {key_rowid, key_beer_name, key_beer_style, key_brewery, key_abv, key_beer_score, key_beer_image, key_beer_comments }, key_rowid + "=" + id, null, null, null, null, null); if (mcursor != null) { mcursor.movetofirst(); } homecoming mcursor; } /** * method update beer record. * @param id * @param name * @param standard * @return boolean */ public boolean updatebeer(int id, string beer_name, string beer_style, string beer_score, string brewery, string abv, string imageloc, string comments) { contentvalues args = new contentvalues(); args.put(key_beer_name, beer_name); args.put(key_beer_style, beer_style); args.put(key_brewery, brewery); args.put(key_beer_score, beer_score); args.put(key_abv, abv); args.put(key_beer_image, imageloc); args.put(key_beer_comments, comments); homecoming mdb.update(database_table, args, key_rowid + "=" + id, null) > 0; } }
the class add together info is:
bundle com.mckallip.beeronthewall; import android.content.context; 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 android.widget.spinner; import android.widget.textview; import android.widget.toast; public class addbeeractivity extends beeronthewallactivity { private edittext et1; private edittext et2; private edittext et3; private edittext et4; private spinner score_spin; private edittext et5; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.add_beer); mdatabase.open(); context e = getapplicationcontext(); string test = "read only"; if (mdatabase.getdatabase().isreadonly()){ test = "not readonly" + mdatabase.getdatabase().getpath(); } toast t = toast.maketext(e, test, 2); t.show(); et1 = (edittext) findviewbyid(r.id.add_beer_name); et2 = (edittext)findviewbyid(r.id.add_beer_style); et3 = (edittext) findviewbyid(r.id.add_brewery); et4 = (edittext) findviewbyid(r.id.add_abv); score_spin = (spinner) findviewbyid(r.id.score_spinner); et5 = (edittext) findviewbyid(r.id.add_comments); ((button)findviewbyid(r.id.add_submit)).setonclicklistener(new onclicklistener() { public void onclick( view v ){ if (mdatabase.getdatabase().isreadonly())mdatabase.open(); long beer_id = mdatabase.createbeer( et1.tostring(), et2.tostring(), score_spin.tostring(), et3.tostring(), et4.tostring(), "image", et5.tostring() ); context context = getapplicationcontext(); charsequence text = "your beer added @ database position " + beer_id; if ( beer_id == -1 ){ text = "there error , beer not added."; } toast toast = toast.maketext(context, text, 2); toast.show(); // reset form if ( beer_id != -1 ){ et1.settext(null); et2.settext(null); et3.settext(null); et4.settext(null); et5.settext(null); } } }); // handle go list button final button gotolist = (button) findviewbyid(r.id.beer_list); gotolist.setonclicklistener(new view.onclicklistener() { public void onclick(view v) { // go other activity displays beer list intent intent = new intent(addbeeractivity.this, beerlistactivity.class); startactivity(intent); } }); } }
i added toasts way seek , debug it. first 1 claims read , can't figure out why or how create writable.
also instantiate databaseutil in beeronthewallactivity static variable, so...
public class beeronthewallactivity extends activity { protected databaseutil mdatabase = null; //protected cursor mcursor = null; //protected sqlitedatabase mdb = null; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mdatabase = new databaseutil(this.getapplicationcontext()); mdatabase.open(); }
when press button add together info error log states:
07-14 00:31:45.549: error/database(31512): error inserting beer_abv=android.widget.edittext@47a27ea8 beer_style=android.widget.edittext@47a25d28 beer_score=android.widget.spinner@47a2a768 beer_name=android.widget.edittext@47a245a8 beer_comments=android.widget.edittext@47a2b560 beer_image=image beer_brewery=android.widget.edittext@47a26de8
07-14 00:31:45.549: error/database(31512): android.database.sqlite.sqliteexception: table beer_list has no column named beer_score: , while compiling: insert beer_list(beer_abv, beer_style, beer_score, beer_name, beer_comments, beer_image, beer_brewery) values(?, ?, ?, ?, ?, ?, ?);
i think all. help much appreciated.
please check below
your code
private static final string create_beer_table = "create table " + database_table + " (" + key_rowid + " integer primary key autoincrement, " + key_beer_name + " text, " + key_beer_style + " text, " + key_brewery + " text, " + key_abv + " text, " + key_beer_score + "text, " + key_beer_image + " text, " + key_beer_comments + "text );";
changed used this
private static final string create_beer_table = "create table " + database_table + " (" + key_rowid + " integer primary key autoincrement, " + key_beer_name + " text, " + key_beer_style + " text, " + key_brewery + " text, " + key_abv + " text, " + key_beer_score + " text, " + key_beer_image + " text, " + key_beer_comments + " text );";
android database sqlite android-edittext
Comments
Post a Comment