java - Android database SQLite date may not be null -
i attempting update sqlite database date field, using datepicker. simplicties sake (on part) decided take date , pass string update database using strings (i have no desire perform datetime functions in instance.
the datbase works (at least, via dialog set up) when data cast textview nothing appears, eclipse stacktrace reports following:
05-09 22:47:30.164: e/sqlitedatabase(3112): error inserting chest=100 arms=android.widget.textview@4125c110 legs=100 waist=100 weight=100 05-09 22:47:30.164: e/sqlitedatabase(3112): android.database.sqlite.sqliteconstraintexception: personalstats.date may not null (code 19) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqliteconnection.nativeexecuteforlastinsertedrowid(native method) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqliteconnection.executeforlastinsertedrowid(sqliteconnection.java:775) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqlitesession.executeforlastinsertedrowid(sqlitesession.java:788) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqlitestatement.executeinsert(sqlitestatement.java:86) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqlitedatabase.insertwithonconflict(sqlitedatabase.java:1469) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.database.sqlite.sqlitedatabase.insert(sqlitedatabase.java:1339) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ com.uhi.fatfighter.stats.createentry(stats.java:86) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ com.uhi.fatfighter.mainactivity.onclick(mainactivity.java:250) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.view.view.performclick(view.java:4084) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.view.view$performclick.run(view.java:16966) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.os.handler.handlecallback(handler.java:615) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.os.handler.dispatchmessage(handler.java:92) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.os.looper.loop(looper.java:137) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ android.app.activitythread.main(activitythread.java:4928) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ java.lang.reflect.method.invokenative(native method) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ java.lang.reflect.method.invoke(method.java:511) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:791) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:558) 05-09 22:47:30.164: e/sqlitedatabase(3112): @ dalvik.system.nativestart.main(native method)
below class sql handled:
public class stats { public static final string key_rowid = "_id"; public static final string key_weight = "weight"; public static final string key_waist = "waist"; public static final string key_chest = "chest"; public static final string key_legs = "legs"; public static final string key_arms = "arms"; public static final string key_date = "date"; private static final string database_name = "statsdb"; private static final string database_table = "personalstats"; private static final int database_version = 4; private dbhelper ffhelper; private final context ffcontext; private sqlitedatabase ffdatabase; private static class dbhelper extends sqliteopenhelper { public dbhelper(context context) { super(context, database_name, null, database_version); } @override public void oncreate(sqlitedatabase db) { db.execsql("create table " + database_table + " (" + key_rowid + " integer primary key autoincrement, " + key_weight + " text not null, " + key_waist + " text not null, " + key_chest + " text not null, " + key_legs + " text not null, " + key_arms + " text not null," + key_date + " text not null);"); } @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { db.execsql("drop table if exists " + database_table); oncreate(db); } } public stats(context c) { ffcontext = c; } public stats open() throws sqlexception { ffhelper = new dbhelper(ffcontext); ffdatabase = ffhelper.getwritabledatabase(); return this; } public void close() { ffhelper.close(); } public long createentry(string weight, string waist, string chest, string legs, string arms, string date) { contentvalues cv = new contentvalues(); cv.put(key_weight, weight); cv.put(key_waist, waist); cv.put(key_chest, chest); cv.put(key_legs, legs); cv.put(key_arms, arms); cv.put(key_arms, date); return ffdatabase.insert(database_table, null, cv); } public string getdata() { string[] columns = new string[] { key_rowid, key_weight, key_waist, key_chest, key_legs, key_arms, key_date}; cursor c = ffdatabase.query(database_table, columns, null, null, null, null, null); string result = ""; int irow = c.getcolumnindex(key_rowid); int iweight = c.getcolumnindex(key_weight); int iwaist = c.getcolumnindex(key_waist); int ichest = c.getcolumnindex(key_chest); int ilegs = c.getcolumnindex(key_legs); int iarms = c.getcolumnindex(key_arms); int idate = c.getcolumnindex(key_date); (c.movetofirst(); !c.isafterlast(); c.movetonext()) { result = result + c.getstring(irow) + " " + c.getstring(iweight) + " " + c.getstring(iwaist) + " " + c.getstring(ichest) + " " + c.getstring(ilegs) + " " + c.getstring(iarms) + " " + c.getstring(idate)+ "\n"; } return result; } }
the view class:
public class dbview extends activity { @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.view_stats); textview tv = (textview) findviewbyid(r.id.tvdbinfo); stats dbinfo = new stats(this); dbinfo.open(); string data = dbinfo.getdata(); dbinfo.close(); tv.settext(data); }
the edittexts , datepicker in main_activity, can post if help?
you put 2 times same key in content values.
cv.put(key_arms, arms); cv.put(key_arms, date);
change :
cv.put(key_arms, arms); cv.put(key_date, date);
Comments
Post a Comment