1

当用户从以前的版本升级时,我需要在我的应用程序中重建 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");

      }

任何帮助都感激不尽。

4

2 回答 2

1

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

在 Android 上升级应用程序后如何更新表架构?

如何在 Android 中升级 SQLite 数据库?

于 2013-08-10T18:35:51.710 回答
1

这是一个两步实施。

  1. 实现 onUpgrade()。

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

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

于 2013-08-10T21:15:54.717 回答