相关疑难解决方法(0)

将SQLite数据库从一个版本升级到另一个版本?

我收到一个错误,Logcat说某个列(在我的SQLiteOpenHelper子类中)不存在.我以为我可以通过更改DATABASE_CREATE字符串来升级数据库.但显然不是,那么我如何(逐步)将我的SQLite数据库从版本1升级到版本2?

如果问题看起来像"noobish",我很抱歉,但我仍然在学习Android.

@ Pentium10这是我在onUpgrade中所做的:

private static final int DATABASE_VERSION = 1;

....

switch (upgradeVersion) {
case 1:
    db.execSQL("ALTER TABLE task ADD body TEXT");
    upgradeVersion = 2;
    break;
}

...
Run Code Online (Sandbox Code Playgroud)

java sqlite android upgrade

14
推荐指数
1
解决办法
2万
查看次数

如何在Android上的Play商店上传我的应用程序的新版本之前测试升级sqlite数据库

我发现问题在更新应用版本后,在我上传的应用程序中找不到这样的表"table_name".我在测试后出来我只是在将旧版本的应用程序升级到新版本的应用程序之后才遇到此问题

我所实施的内容

我已经在onUpgrade()方法中完成了代码,并且还在构造函数中升级了db版本,但我无法在设备中对其进行测试.

步骤1) 将版本代码1增加到2

public databasehelper(Context context) {

        super(context, DATABASE_NAME, null, 2);
        this.myContext = context;
        try {
            createDataBase();
            openDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
Run Code Online (Sandbox Code Playgroud)

步骤2)将新表添加到onUpgrade()方法中

@Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        Log.e("onUpgrade db", ">>>>called");
        switch (oldVersion) {
        case 1:
            db.execSQL(DATABASE_CREATE_notification_counter);
            Log.e("db version", ">>>"+oldVersion);
            // we want both updates, so no break statement here...
        case 2:
            Log.e("db version", ">>>"+oldVersion);
                  // I removed onCreate() method from here because new version will …
Run Code Online (Sandbox Code Playgroud)

java database sqlite android android-sqlite

11
推荐指数
1
解决办法
7700
查看次数

更新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 + …
Run Code Online (Sandbox Code Playgroud)

database sqlite android

7
推荐指数
1
解决办法
2万
查看次数

Android SQLite:使用新数据库替换旧数据库或使用迁移脚本

我有一个Android应用程序,它使用SQLite数据库和Active Android作为ORM.在每次应用更新时,我需要使用新的/更新的数据发送我的数据库.这就是我一直在做的事情

  1. 我有一个my_app.db数据库
  2. 我对my_app.db的行,表等进行了修改
  3. 我将修改后的my_app.db保存为my_app_v2.db(依此类推)
  4. 我更换my_app.db与资产的文件夹的文件my_app_v2.db并将其设置为默认的数据库
  5. 我使用新创建的my_app_v2.db编译并运行程序

因此,当用户获取应用程序时,它将使用带有新内容的my_app_v2.db.

我知道Active Android 支持迁移脚本,但在每次数据库更新时,我需要添加/更新大约2000多条记录.因此,对于每个数据库更新,我需要一个包含2000多个插入/更新语句的迁移脚本,这意味着对于3个以上的连续升级,应用程序必须执行大约6000多个语句.

我想知道我用新的数据库替换整个数据库的方法是不好的做法,应该首选迁移脚本.

database sqlite android

7
推荐指数
1
解决办法
3401
查看次数

在Android中为Sample数据放置代码的位置?

我已经构建了一个Android应用程序,我insertSampleData()onCreate()主要活动的方法调用该方法.

问题是onCreate()每次启动应用程序时都会调用该方法,这会导致我的数据库填充大量样本数据.

我想在安装应用程序时只提供一次示例数据.谁能告诉我怎么做?非常感谢 !

PS:该方法insertSampleData()用于将样本数据插入到Sq-lite数据库中.

sqlite android android-sqlite

-1
推荐指数
1
解决办法
161
查看次数

标签 统计

android ×5

sqlite ×5

database ×3

android-sqlite ×2

java ×2

upgrade ×1