2016-05-09 3 views
-2

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:


Error

Antwort

2

Sein Typo Sie , vergessen, während Tabelle erstellen

+COLUMN_NAME 
+" TEXT PRIMARY KEY, " // add , after primary key 
+COLUMN_BMI 

Deinstallieren Sie die Anwendung von einem Emulator/Gerät und installieren Sie sie erneut.

1

+COLUMN_NAME +" TEXT PRIMARY KEY," hinzufügen "," nach "TEXT PRIMARY KEY".

Verwandte Themen