This is my table creation in the oncreate method of my Dbadatper
String CREATE_EXERCISES_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_EXERCISES+"("
+ KEY_ROWID + " INTEGER PRIMARY KEY, "
+ KEY_EXER_NAME + " TEXT, "
+ KEY_DEFAULTMANWEIGHT + " INTEGER, "
+ KEY_DEFAULTWOMANWEIGHT + " INTEGER, "
+ KEY_WEIGHTS_FILT + " INTEGER, "
+ KEY_OLYMPIC_FILT + " INTEGER, "
+ KEY_EQUIPNEED_FILT + " INTEGER, "
+ KEY_UPPERBODY_FILT + " INTEGER, "
+ KEY_LOWERBODY_FILT + " INTEGER, "
+ KEY_LARGEAREA_FILT + " INTEGER);";
db.execSQL(CREATE_EXERCISES_TABLE);
This is my insert code for inserting an exercise
public void addExercise(Exercise exer) {
SQLiteDatabase db = this.open();
ContentValues values = new ContentValues();
values.put(KEY_EXER_NAME, exer.getName());
values.put(KEY_DEFAULTMANWEIGHT, exer.getDefaultManWeight());
values.put(KEY_DEFAULTWOMANWEIGHT, exer.getDefaultWomanWeight());
values.put(KEY_WEIGHTS_FILT, exer.getWeightFilt());
values.put(KEY_OLYMPIC_FILT, exer.getOlympicFilt());
values.put(KEY_EQUIPNEED_FILT, exer.getEquipFilt());
values.put(KEY_UPPERBODY_FILT, exer.getUpperBodyFilt());
values.put(KEY_LOWERBODY_FILT, exer.getLowerBodyFilt());
values.put(KEY_LARGEAREA_FILT, exer.getLargeAreaFilt());
// Inserting Row
db.insert(TABLE_EXERCISES, null, values);
db.close(); // Closing database connection
}
and this is my actual insert
ExerTable db= new ExerTable(ctx);
Exercise pushups =new Exercise("Pushups",0,0,0,0,0,1,0,1);
db.addExercise(pushups);
I’ve been stumped on this for a good while, whenever I try to run this I get this error
05-31 19:33:27.107: ERROR/Database(413): Error inserting upperbody_filter=1 olympic_filter=0 default_man_weight=0 default_woman_weight=0 weights_filter=0 lowerbody_filter=0 exername=Pullups large_area_filter=1 equipment_need_filter=1
05-31 19:33:27.107: ERROR/Database(413): android.database.sqlite.SQLiteException: table Exercises has no column named lowerbody_filter: , while compiling: INSERT INTO Exercises(upperbody_filter, olympic_filter, default_man_weight, default_woman_weight, weights_filter, lowerbody_filter, exername, large_area_filter, equipment_need_filter) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?);
Everything looks good to me, so my best guess is that you’re using an older version of the database that in fact doesn’t have a
lowerbody_filtercolumn. If you created the table earlier in development without that column and don’t have things properly set up with schema version numbers andSQLiteOpenHelper.onUpgrade(), then you’ll still be using the old version. A quick uninstall / reinstall should show if this is the case. If so, then your solution is to be sure to always increase your schema version number every time you change the schema, and to useSQLiteOpenHelper.onUpgrade()or some other means to make sure your database is always upgraded when necessary.