Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android – 更新sqlite数据库版本?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个数据库,我想添加一个列,我更改了静态数据库版本但是当我在我的设备上运行程序时,新列仍然没有,所以我猜我的onupdate没有被调用,我不确定为什么.

这就是我创建数据库的方式

private static class DatabaseHelper extends sqliteOpenHelper 
    {
        DatabaseHelper(Context context) 
        {
            super(context,DATABASE_NAME,null,DATABASE_VERSION);
        }

        @Override
        public void onCreate(sqliteDatabase db) 
        {
            createTables(db);
        }

        @Override
        public void onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) 
        {
            Log.w("CalendarDB","Upgrading database from version " + oldVersion 
                  + " to "
                  + newVersion + ",which will destroy all old data");
            db.execsql("drop table IF EXISTS Events_Table");
            onCreate(db);
        }

        private void createTables(sqliteDatabase db){
            db.execsql("create table " + EVENTS_TABLE + "(" + ID + " @R_618_2428@ary key autoincrement," +
                    EVENT + " TEXT," + LOCATION + " TEXT," + DESCRIPTION + " TEXT," + DATE + " TEXT," + START + " LONG," + END + " TEXT," + REAL_START_TIME + " TEXT," 
                    + REAL_END_TIME + " TEXT," + COLOR + " TEXT," + BLINK + " TEXT," + VIBRATE + " TEXT," + RING_TONE_PATH + " TEXT," + ICON + " TEXT," + REMINDERS +
                    " TEXT," + START_WITH_REMINDER + " TEXT," + CALENDAR_ID + " TEXT," + EVENT_ID + " TEXT);");
        }
    }

还有什么我需要做的才能让onupdate被调用吗?我试过跟随this answer,但仍然没有结果

@L_696_17@

为了在Android中升级数据库,您应该将DATABASE_VERSION增加1,以便sqlOpenHelper知道它必须调用onUpgrade方法.

Rembember

这仅在您调用getWritableDatabase()时有效,否则将无法升级.如果更改版本并调用getReadableDatabase,它将显示异常

throw new sqliteException("Can't upgrade read-only database from version " +
                        db.getVersion() + " to " + mNewVersion + ": " + path);

但为什么?
你看到当你拨打getWritableDatabase代码检查时,版本是相同的:

if (version != mNewVersion) {
                db.begintransaction();
                try {
                    if (version == 0) {
                        onCreate(db);
                    } else {
                        if (version > mNewVersion) {
                            onDowngrade(db,version,mNewVersion);
                        } else {
                            onUpgrade(db,mNewVersion);
                        }
                    }
                    db.setVersion(mNewVersion);
                    db.settransactionsuccessful();
                } finally {
                    db.endtransaction();
}
}

更新

事实证明它应该与getReadableDatabase()一起使用,因为在代码中你总是得到一个WrittableDatabase.所以它应该适用于这两种方法,这里是getReadableDatabase()的文档:

大佬总结

以上是大佬教程为你收集整理的android – 更新sqlite数据库版本?全部内容,希望文章能够帮你解决android – 更新sqlite数据库版本?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。