Не удается разрешить символ «MODE_PRIVATE» - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь открыть базу данных в Android Studio, используя строку:

SQLiteDatabase gardenDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);

, но выдает ошибку Cannot resolve symbol 'MODE_PRIVATE'.Я не понимаю, что не так, так как я использовал точно такую ​​же строку кода в другом месте моего проекта в разных классах, и раньше он работал нормально.

Мой полный код:

public class MyWorker extends Worker {

    public MyWorker (@NonNull Context context, @NonNull WorkerParameters params) {
        super(context, params);
    }

    @Override
    public Result doWork() {

        SQLiteDatabase myDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);
        //Do stuff

        return Result.success();
    }
}

Импорт:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.support.annotation.NonNull;

import androidx.work.Result;
import androidx.work.Worker;
import androidx.work.WorkerParameters;

import static android.database.sqlite.SQLiteDatabase.openOrCreateDatabase;

Я использую этот сайт, чтобы помочь написать код моей базы данных: https://www.tutorialspoint.com/android/android_sqlite_database.htm

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Как вы можете видеть в комментариях к вашему вопросу, @BarryFruitman указал, что:

SQLiteDatabase.openOrCreateDatabase () даже не принимает «режим» в качестве второго параметра

, и после этого я прокомментировал:

этот openOrCreateDatabase () является методом ContextWrapperкласс

и мы оба правы.Проблема обнаружена теперь после того, как вы разместили ссылку на учебник, по которому вы переходите.Действительно, в этом уроке предлагается этот метод:

SQLiteDatabase myDatabase = openOrCreateDatabase("myDatabase",MODE_PRIVATE,null);

, и он принадлежит классу ContextWrapper,, но в том же учебном пособии упомянутые подписи openOrCreateDatabase():

openOrCreateDatabase(String path, SQLiteDatabase.CursorFactory factory)

и

openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory)

, которые оба являются членами SQLiteDatabase класса.Я считаю, что это ошибка учебника.Поэтому перейдите к следующему:

SQLiteDatabase gardenDatabase = SQLiteDatabase.openOrCreateDatabase(databaseNameWithPath, null);

, который использует метод из класса SQLiteDatabase. Редактировать Конечно, для переменной databaseNameWithPath необходимо указать полный путь и имя базы данных, например:

String databaseNameWithPath = "/data/data/" + <yourpackagename> + "/databases/" + "myDatabase";

, и создать каталог, если он еще не существует.

0 голосов
/ 07 декабря 2018

Вы не импортировали эту константу:

import static android.content.Context.MODE_PRIVATE;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...