Почему база данных создается каждый раз, когда я перезапускаю свое приложение? - PullRequest
0 голосов
/ 13 апреля 2019

У меня есть база данных, которая создается при запуске приложения. Он предназначен для загрузки файла и создания базы данных из файла. Проблема в том, что он загружает файл и создает базу данных каждый раз, когда я снова открываю приложение. 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 (), но только после создания экземпляра базы данных в mainacctivity. Как я могу проверить, прежде чем создавать новый экземпляр. Я думаю, это больше вопрос принципов проектирования программного обеспечения ... любая помощь

1 Ответ

0 голосов
/ 14 апреля 2019

вот правильный код для проверки существования базы данных

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

где DB_NAME - имя базы данных, а DatabaseHelper - класс базы данных

...