2016-07-10 6 views
0

Ich weiß, das wurde gefragt, aber ich habe alle anderen Fragen überprüft und keine Mein Problem behoben.Android Studio SQLiteOpenHelper "DATABSE hat keine Spalte namens NAME"

Dies ist die Ausnahme:

E/SQLiteLog: (1) table Traust_Du_Dich_App has no column named name 
E/SQLiteDatabase: Error inserting name=Loras gender=Male birthday=21 
android.database.sqlite.SQLiteException: table Traust_Du_Dich_App has no column named name (code 1): , while compiling: INSERT INTO Traust_Du_Dich_App(name,gender,birthday) VALUES (?,?,?) 
    at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
    at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887) 
    at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498) 
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
    at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
    at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 
    at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1341) 
    at com.lukas.saufapp.MyDbHandler.addProduct(MyDbHandler.java:57) 
    at com.lukas.saufapp.MainActivity$3.onClick(MainActivity.java:232) 
    at android.view.View.performClick(View.java:5198) 
    at android.view.View$PerformClick.run(View.java:21147) 
    at android.os.Handler.handleCallback(Handler.java:739) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Dies ist helperClass:

public class MyDbHandler extends SQLiteOpenHelper { 
    private static final int DATABASE_VERSION = 2; 
    private static final String DATABASE_NAME = "quadstudios_de"; 
    private static final String TABLE_PRODUCTS = "Traust_Du_Dich_App"; 

    public static final String COLUMN_ID = "id"; 
    public static final String COLUMN_NAME = "name"; 
    public static final String COLUMN_GENDER = "gender"; 
    public static final String COLUMN_BDAY = "birthday"; 

    public MyDbHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
     super(context, DATABASE_NAME, factory, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String CREATE_PRODUCTS_TABLE = "CREATE TABLE " + TABLE_PRODUCTS + "(" + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_NAME + " TEXT," + COLUMN_GENDER + " TEXT," + COLUMN_BDAY + " TEXT" + ")"; 

     db.execSQL(CREATE_PRODUCTS_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_PRODUCTS); 
     onCreate(db); 
    } 

    public void AddUser(User user) { 

     ContentValues values = new ContentValues(); 
     values.put(COLUMN_NAME, user.Name); 
     values.put(COLUMN_GENDER, user.Gender); 
     values.put(COLUMN_BDAY, user.Birthday); 

     SQLiteDatabase db = this.getWritableDatabase(); 

     db.insert(TABLE_PRODUCTS, null, values); 
     db.close(); 
    } 
} 

Hier nenne ich es:

Btn_FaceBook.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     MyDbHandler handler = new MyDbHandler(MainActivity.this, null, null, 1); 
     User user = new User("Thomas", "Male", "21"); 
     handler.AddUser(user); 
} 
+0

Haben Sie Spaltennamen vor kurzem hinzugefügt? Möglicherweise müssen Sie die DB-Version aktualisieren, um die Spalte hinzuzufügen (versuchen Sie, DATABASE_VERSION auf 3 zu ändern). – W0rmH0le

+0

Nein, ich habe es direkt hinzugefügt, als ich die Tabelle –

Antwort

0

Das einzige Problem, das ich denken kann, nicht aktualisiert deine Versionsnummer Wenn Sie die Spalten in der Datenbank ändern, müssen Sie auch die Versionsnummer aktualisieren.

Statt dessen:

private static final int DATABASE_VERSION = 2; 

Try this:

private static final int DATABASE_VERSION = 3; 
+0

erstellte Das half nicht, ist es richtig, dass ich DATABSE_NAME und TABLE so nannte, wenn die Datenbank so aussieht? http://quadstudios.de/Unbenannt.PNG –

+0

Und woher weiß der Code, wo er den Insert nur durch seinen Namen drücken soll? –

Verwandte Themen