我有一个类DatabaseHandler。我用以下代码覆盖了onCreate(SQLiteDatabase db)方法:

    String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_SONG + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                            SONG_TITLE + " TEXT," + ARTIST_NAME + " TEXT," + GENRE + " TEXT," +
                            SONG_PATH + " TEXT" + ")";
    db.execSQL(CREATE_TABLE);


但是我发现,每次打开模拟器时,都会有额外的项目附加到TABLE_SONG上,结果即使在sdcard中有6首歌曲,数据库仍显示454首歌曲。这迫使我放弃表,重新考虑重新创建它。但是现在我被困在找不到表或者没有创建表的位置。是不是应该在我创建此类的对象时每次调用onCreate()方法?

最佳答案

我同意waqas,请在下面找到示例代码

    @Override
        public void onCreate(SQLiteDatabase db) {
       String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME
                    + ... ) ";
db.execSQL(CREATE_TABLE);}

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // Drop older table if exists
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
                onCreate(db);
}


编辑
onUpgrade()的使用

当您构造一个比打开的数据库版本新的SQLiteOpenHelper时,将调用该函数。做什么取决于新旧版本之间在数据库中所做的更改。不删除已更改的表的唯一情况是,更改所注意的不只是添加的列。然后,您可以使用ALTER TABLE语句将新列添加到表签名中。

关于android - 找不到表格Android,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13123757/

10-11 15:41