Не удалось вызвать android базу данных SQLite - PullRequest
0 голосов
/ 09 июля 2020

У меня есть приложение, использующее базу данных SQLite, но на половине устройств android возникает проблема с его запуском, и я получаю эту ошибку. Хотя я использую эти строки:

        DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
        SQLiteDatabase database = databaseHelper.getWritableDatabase();
        databaseHelper.onCreate(database);

кода для запуска моей базы данных, тем не менее, я получил эту ошибку:

Fatal Exception: java.lang.NullPointerException
Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference`.

Я был бы очень рад, если вы поможете мне разобраться эта проблема.

Следующие коды предназначены для моего класса помощника по базе данных: `publi c class DatabaseHelper extends SQLiteOpenHelper {

public DatabaseHelper(Context context) {
    super(context, "foods_database.db", null, 2);
}

@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL("create table if not exists foods(sFoodName text, sUniteIndex text)");

}

public void deleteFoodsTable(SQLiteDatabase database){
    database.execSQL("drop table if exists foods");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}

}`

И эти строки кода предназначены для запуска базы данных помощник и добавление элемента в базу данных:

                DatabaseHelper databaseHelper = new DatabaseHelper(getActivity());
                SQLiteDatabase database = databaseHelper.getWritableDatabase();
                databaseHelper.onCreate(database);

                ContentValues values = new ContentValues();

                for (int i = 0; i < foodsList.size() ; i++){
                    values.put("sFoodName" , foodsList.get(i).getFoodName());
                    values.put("sUniteIndex" , TextUtils.join("," , foodsList.get(i).getUnitesIndexArray()));

                    database.insert("foods" , null , values);

                }

                database.close();

1 Ответ

0 голосов
/ 09 июля 2020

Вы можете инициализировать объект своей базы данных внутри класса базы данных следующим образом:

public void createDB()
{
  DatabaseHelper databaseHelper = new DatabaseHelper(context);
    SQLiteDatabase database = databaseHelper.getWritableDatabase();
}

Затем вызовите эту функцию внутри фрагмента, как это

DBclass classobject = new DBclass(getActivity());
classobject.createDB();

Надеюсь, ваша ошибка исчезнет :)

...