Es besagt, dass der Spaltenname bmi nicht existiert. Die resultierende Fehlermeldung ist, dass das System eine Spalte mit dem Namen bmi nicht finden kann. Ich habe es schon ein paar Mal überprüft und konnte keinen Fehler im Code finden. Vielleicht siehst du einen ... Der volle Stack Dump ist nach dem Code angehängt.Tabelle hat keine Spalte mit dem Namen xyz beim Einfügen von Daten in SQLite-Datenbank
public class MyDBHandler extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "bmiwerte.db";
public static final String TABLE_BMIS = "bmis";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_BMI = "bmi";
public MyDBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
private static final String CREATE_TABLE_BMIS = "CREATE TABLE "
+TABLE_BMIS
+" ("
+COLUMN_ID
+" INTEGER AUTOINCREMENT, "
+COLUMN_NAME
+" TEXT PRIMARY KEY"
+COLUMN_BMI
+" TEXT"
+");";
@Override
public void onCreate(SQLiteDatabase db) {
//Lässt Query in SQL laufen
Log.i("exxxx", "Creating Check");
db.execSQL(CREATE_TABLE_BMIS);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXIST " + TABLE_BMIS);
onCreate(db);
}
public void addValues(BMI_Werte wert){
ContentValues values = new ContentValues();
values.put(COLUMN_NAME, wert.get_name());
values.put(COLUMN_BMI, wert.get_bmiWert().toString());
Log.i("exxx", wert.get_name());
Log.i("exxxx", wert.get_bmiWert().toString());
SQLiteDatabase db = getWritableDatabase();
db.insert(TABLE_BMIS, null, values);
db.close();
}
public void deleteValues(String name){
Log.i("exxxx", "deleteValuse");
SQLiteDatabase db = getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_BMIS + " WHERE " +
COLUMN_NAME + "=\"" + name + "\";");
}
public String databaseToString(){
String dbString = "";
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT * FROM " + TABLE_BMIS;
String test = "DESCRIBE " + TABLE_BMIS;
Cursor c = db.rawQuery(query, null);
c.moveToFirst();
while(!c.isAfterLast()){
if(c.getString(c.getColumnIndex("name")) != null){
dbString += c.getString(c.getColumnIndex("name"));
dbString += "\n";
}
c.moveToNext();
}
db.close();
return dbString;
}
}
Fehler und Stack-Dump: