Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLite Android数据库预加载数据库和管理_Android_Database_Sqlite - Fatal编程技术网

SQLite Android数据库预加载数据库和管理

SQLite Android数据库预加载数据库和管理,android,database,sqlite,Android,Database,Sqlite,我目前有一个数据库,将通过互联网进行更新。然而,我也将有一个预加载的数据库来启动用户。我在想,在允许基于数据库版本号进行更新的同时,如何处理预加载的信息是最好的方法。因此,我可能会包含一个数据库资源文件,或者使用列表将它们全部添加。所以我的问题是,我应该如何管理我的启动数据库并确保它不会一次又一次地添加表,我应该使用这个还是使用数据库版本的共享首选项或其他什么?将数据库文件(带有预加载的数据)添加到项目的资产文件夹中。 然后在应用程序中调用数据库时,检查数据库是否存在,如果不存在,则将数据库从资

我目前有一个数据库,将通过互联网进行更新。然而,我也将有一个预加载的数据库来启动用户。我在想,在允许基于数据库版本号进行更新的同时,如何处理预加载的信息是最好的方法。因此,我可能会包含一个数据库资源文件,或者使用列表将它们全部添加。所以我的问题是,我应该如何管理我的启动数据库并确保它不会一次又一次地添加表,我应该使用这个还是使用数据库版本的共享首选项或其他什么?

将数据库文件(带有预加载的数据)添加到项目的资产文件夹中。 然后在应用程序中调用数据库时,检查数据库是否存在,如果不存在,则将数据库从资产复制到应用程序中


我认为博客中有一个很好的示例,可以用示例代码实现这一点。只要用谷歌搜索一下,你就会发现你的内容提供商会打电话给你

SQLiteDatabase db = database.getWritableDatabase();
如果需要,它将调用sqlite openhelper的
onCreate
OnUpgrade
。因此,我认为没有必要使用额外的库来实现这一点。当你第一次升级应用程序时,你会被冷落。我认为升级SQLite数据库的最佳方法是,我称之为Adams升级方法,因为我在上找到了它

这是我在onUpgrade方法中得到的。 @凌驾 public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){

int upgradeTo=oldVersion+1;

虽然(升级到这样您就有两个数据库,一个预加载,另一个正在从internet更新,对吗?我应该使用应用程序修补程序文件来更新数据库,还是应该在我的服务器上使用JavaScript之类的东西。不,您应该有sql脚本来填充数据库。原始文件夹中的文本文件将压缩nicelY
    int upgradeTo = oldVersion + 1;
    while (upgradeTo <= newVersion) {
        @SuppressWarnings("unused")
        int res;
        switch (upgradeTo) {
        // update old resrawid's to constants
        // this was caused when I saved R values in the database
        // and then later realized they would change.
        // the old resrawid is changed to a constant.
        case 42:
            ContentValues values;
            int rs;
            rs = 2130968576;
            values = new ContentValues();
            values.put(
                    KEY_RESRAWID,
                    com.gosylvester.bestrides.ImageTextListViewActivity.SAMPLE_DRAGON);
            res = db.update(TABLE_RIDES, values, KEY_RESRAWID + " = ?",
                    new String[] { String.valueOf(rs) });

            rs = 2130968577;
            values = new ContentValues();
            values.put(
                    KEY_RESRAWID,
                    com.gosylvester.bestrides.ImageTextListViewActivity.SAMPLE_M119);
            res = db.update(TABLE_RIDES, values, KEY_RESRAWID + " = ?",
                    new String[] { String.valueOf(rs) });

            rs = 2130968578;
            values = new ContentValues();
            values.put(
                    KEY_RESRAWID,
                    com.gosylvester.bestrides.ImageTextListViewActivity.SAMPLE_MEDINA);
            res = db.update(TABLE_RIDES, values, KEY_RESRAWID + " = ?",
                    new String[] { String.valueOf(rs) });
            break;
        case 43:
            // new column added for last_viewed.
            db.execSQL(VERSION_43_ALTER);
            break;

        case 44:
            // new index on KEY_DATE_UPDATE DESC
            db.execSQL(VERSION_44_CREATE_INDEX);
            break;
        case 45:
            // change field name id to _id
            // check if current table has _id column
            String s = "PRAGMA table_info(" + TABLE_RIDES + ")";
            Cursor ti = db.rawQuery(s, null);
            if (ti.moveToFirst()) {
                String key = ti.getString(1);
                if (!key.equals(KEY_ID)) {
                    // drop existing indexes
                    db.execSQL(VERSION_45_DROP_INDEX);
                    // rename old table
                    db.execSQL(VERSION_45_RENAME_TABLE);
                    // create new table
                    db.execSQL(VERSION_45_CREATE_TABLE);
                    // copy from old table to new table
                    db.execSQL(VERSION_45_COPY_TABLE);
                    // delete old table
                    db.execSQL(VERSION_45_DROP_TEMP_TABLE);
                    // CREATE DROPED INDEXES
                    db.execSQL(VERSION_45_CREATE_INDEX);
                }
            }
            // get the row count if zero then add in the samples
            long x = DatabaseUtils.queryNumEntries(db, TABLE_RIDES);
            if (x == 0) {
                loaddatabase(db);
            }
        }
        upgradeTo++;
    }
}