Android应用更新时重建SQLite数据库

时间:2013-08-10 18:27:25

标签: android sqlite sharedpreferences

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

      }

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

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

How to upgrade SQLite database in Android?

答案 1 :(得分:1)

这是一个两步实施。

  1. 实施onUpgrade()。

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

  3. Android上SQLite的底层实现会查找对onUpgrade()方法调用的版本号的增加。

相关问题