2016-07-10 5 views
0

これは頼まれていますが、私は他のすべての質問をチェックしています。Android Studio SQLiteOpenHelper "DATABSEにはNAMEという名前の列はありません"

これは例外である:

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) 

これは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(); 
    } 
} 

私はそれを呼び出す:

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

あなたは最近、列名を追加しましたか?たぶん、列を追加するためにDBバージョンを更新する必要があります(DATABASE_VERSIONを3に変更しようとしてください)。 – W0rmH0le

+0

いいえテーブルを作成したときにまっすぐに追加しました –

答えて

0

私は考えることができる唯一の問題は、更新されていませんあなたのバージョン番号。データベースの列を変更するたびに、バージョン番号も更新する必要があります。

の代わりにこの:

private static final int DATABASE_VERSION = 2; 

これを試してみてください:

private static final int DATABASE_VERSION = 3; 
+0

データベースがこのように見える場合、DATABSE_NAMEとTABLEという名前の正しいことはありませんか? http://quadstudios.de/Unbenannt.PNG –

+0

そしてコードでは、その名前だけで挿入物をどこに押し込むべきかを知っていますか? –

関連する問題