SQLiteLog: (1) no such table for Android 9

208
28 мая 2019, 18:10

Возникла проблема с Android 9.
Использую "стандартный" класс MyDataBaseOpenHelper extends SQLiteOpenHelper
С выходом андроид 9 появилась проблема android.database.sqlite.SQLiteException:
То есть только на 9 не хочет работать. Базу копирует но таблиц в ней не находит. E/SQLiteLog: (1) no such table: Может кто сталкивался с данной ситуацией?

Методы класса:

public ExternalDbOpenHelper(Context context, String databaseName) {
    super(context, databaseName, null, DATABASE_VERSION);
    this.context = context;
    // путь к базам
    if (android.os.Build.VERSION.SDK_INT >= 17) DB_PATH = context.getApplicationInfo().dataDir + "/databases/";
    else DB_PATH = String.format("//data//data//%s//databases//", context.getPackageName());
    DB_NAME = databaseName;
    //openDataBase();
}

//Создаст базу, если она не создана
public void createDataBase() {
    boolean dbExist = checkDataBase();
    if(dbExist){
        Log.d(LOG_TAG, DB_NAME+" BASE ALREADY EXIST");
        //база уже есть
    }else{
        //создаем пустую базу
        this.getReadableDatabase();
        Log.d(LOG_TAG, DB_NAME+" NEW BASE IS CREATED");
        try {
            copyDataBase();
            Log.d(LOG_TAG, DB_NAME+" BASE COPY");
        } catch (IOException e) {
            throw new Error("Error copying database");
        }
    }
}
//Проверка существования базы данных
private boolean checkDataBase() {
    SQLiteDatabase checkDb = null;
    try {
        String path = DB_PATH + DB_NAME;
        checkDb = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY);
    } catch (SQLException e) {
        Log.e(this.getClass().toString(), "Error while checking db");
    }
    if (checkDb != null) {
        checkDb.close();
    }
    return checkDb != null;
}
//Метод копирования базы
private void copyDataBase() throws IOException {
    // Открываем поток для чтения из уже созданной нами БД
    //источник в assets
    InputStream externalDbStream = context.getAssets().open(DB_NAME);
    // Путь к уже созданной пустой базе в андроиде
    String outFileName = DB_PATH + DB_NAME;
    // поток для записи в эту БД побайтно
    OutputStream localDbStream = new FileOutputStream(outFileName);
    // копирование
    byte[] buffer = new byte[1024];
    int bytesRead;
    while ((bytesRead = externalDbStream.read(buffer)) > 0) {
        localDbStream.write(buffer, 0, bytesRead);
    }
    // закроем потоки
    localDbStream.close();
    externalDbStream.close();
}
public SQLiteDatabase openDataBase() throws SQLException {
    String path = DB_PATH + DB_NAME;
    if (database == null) {
        createDataBase();
        database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
    }
    return database;
}
@Override
public synchronized void close() {
    if (database != null) {
        database.close();
    }
    super.close();
}
READ ALSO
Не получается добавить шрифт neris

Не получается добавить шрифт neris

У меня есть вопрос, не могу подключить к верстаемой странице на своем ПК шрифт neris

150
Сохранение элемента html в localStorage и вывод

Сохранение элемента html в localStorage и вывод

Есть метод, который добавляет новые div на страницу

137