为什么每次我重新启动应用程序时都会创建数据库?

时间:2019-04-13 19:23:07

标签: android sqlite android-database

我有一个在应用程序启动时创建的数据库。旨在下载文件并从该文件创建数据库。问题在于,每次我重新打开应用程序时,它都会下载文件并创建数据库。 MainActivity使用此代码段检查数据库的存在性

dbHelper = new DatabaseHelper(this);
    if(!dbHelper.checkDataBase()) {
        android.os.Debug.waitForDebugger();
        dlPortTask = new DownloadTask(MainActivity.this);
        dlPortTask.execute();
    }

所以问题是当我重新打开主要活动时,数据库又重新创建了。因为每次活动主体打开时我都会创建一个新实例。然后检查数据库是否存在。我如何首先检查数据库,然后如果不存在创建数据库。我如何获取或检查是否存在现有数据库的实例。我的数据库构造函数和checkDatabase方法

public DatabaseHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        DB_PATH = context.getDatabasePath(DB_NAME).getPath();
        this.context = context;
    }
public boolean checkDataBase() {
        File DbFile = new File(DB_PATH + DB_NAME);
        String databasePath = context.getDatabasePath(DB_NAME).getPath();
        return DbFile.exists();
    }
再次

我可以调用checkDatabase(),但只能在mainactivity中实例化数据库之后。在创建新实例之前如何检查。我想这更多是软件设计原理的问题...任何帮助

1 个答案:

答案 0 :(得分:0)

这是检查数据库是否存在的正确代码

if(!getDatabasePath(DatabaseHelper.DB_NAME).exists()) {
    //then create databse
  }

其中DB_NAME是数据库的名称,而DatabaseHelper是数据库类