【问题标题】:Rebuild SQLite database when app updates, Android应用更新时重建 SQLite 数据库,Android
【发布时间】:2013-08-10 18:27:25
【问题描述】:

当用户从以前的版本升级时,我需要在我的应用程序中重建 SQLite 数据库,因为我已经更改了数据库的内容,目前我的应用程序检查它是否是第一次运行然后构建数据库,以便节省后续时间应用程序的启动。因此,当我更新应用程序时,数据库中的新信息都不会显示。有没有办法检查应用程序是否正在更新而不是第一次安装? 这是我将数据插入数据库的代码:

      boolean firstrun = getSharedPreferences("PREFERENCE", MODE_PRIVATE).getBoolean("firstrun", true);
      if (firstrun){
        new AlertDialog.Builder(this)
        .setTitle("Welcome!") //set the Title text
        .setMessage(...)
        .setNeutralButton("OK", null).show(); //Sets the button type
        Thread workThread=new Thread(new Runnable(){

            public void run() {
                dbHelper.deleteAllSpeakers(); // Clear database
                dbHelper.insertSomeSpeakers(); //Add some data
             runOnUiThread(new Runnable(){

                 @Override
                 public void run() {
                     mProgressDialog.dismiss();
                     Toast.makeText(MainActivity.this, "Done", Toast.LENGTH_LONG).show();
                     myFilter.setText("");
                 }

             });
         }

     });
     workThread.start();

     mProgressDialog=ProgressDialog.show(this, "Loading", "Building Speaker Database");

      }

任何帮助将不胜感激。

【问题讨论】:

    标签: android sqlite sharedpreferences


    【解决方案1】:

    您可以使用数据库版本。使用SQLiteOpenHelper 传递您的数据库版本。您可以参考以下答案。

    How to update table schema after an app upgrade on Android?

    How to upgrade SQLite database in Android?

    【讨论】:

    • 对于数据库的频繁更新,我还能用版本升级的方法吗??我使用下载的 xml 来提供我的数据库,还有什么解决方案?谢谢!
    • 数据库升级(更新结构)如添加新字段、更改字段名称、添加新表都需要使用升级数据库版本。您可以使用许多 ORM 库。其中一些是 Sugar ORM、ORMLite、GreenDAO、ActiveAndroid。但是,在您的情况下,如果您只是更新数据库的内容而不是结构,则不需要升级数据库版本。
    【解决方案2】:

    这是一个两步实施。

    1. 实现 onUpgrade()。

    2. 更改数据库的版本号。

    Android 上 SQLite 的底层实现会寻找增加版本号以调用 onUpgrade() 方法。

    【讨论】:

      猜你喜欢
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      相关资源
      最近更新 更多