Класс DBHelper не может быть создан (подкласс SQLiteOpenHelper) внутри того же класса.

Я хочу получить доступ к базе данных и вставить данные в базу данных SQLite. Чтобы получить доступ к базе данных, я пытаюсь создать класс DBHelper, который я создал, расширяя класс SQLiteOpenHelper. Конструктор DBHelperclass:

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

Итак, я пытаюсь создать класс, используя этот код

DBHelper myDb = new DBHelper(getContext());

Выдает ошибку "не удается разрешить метод getContext()", когда функция getContext() используется в качестве аргумента для конструктора класса DBHelper.

Класс DBHelper выглядит следующим образом:

package com.violator.it17250_test1.Database;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import com.violator.it17250_test1.UserProfile;

public class DBHelper extends SQLiteOpenHelper {


private static final String SQL_CREATE_ENTRIES =
        "CREATE TABLE " + UserProfile.Users.TABLE_NAME + " (" +
                UserProfile.Users.COLUMN_NAME_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                UserProfile.Users.COLUMN_NAME_USERNAME + " TEXT," +
                UserProfile.Users.COLUMN_NAME_DOB + " TEXT, " +
                UserProfile.Users.COLUMN_NAME_GENDER + "TEXT )";

private static final String SQL_DELETE_ENTRIES =
        "DROP TABLE IF EXISTS " + UserProfile.Users.TABLE_NAME;


public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "users1.db";

public DBHelper(Context context) {
    super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

DBHelper myDb = new DBHelper(getContext());


@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL(SQL_CREATE_ENTRIES);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL(SQL_DELETE_ENTRIES);
    onCreate(db);
}

public void addInfo(){
    // Gets the data repository in write mode
    SQLiteDatabase db = myDb.getWritableDatabase();
}


}

person vio    schedule 14.10.2018    source источник


Ответы (1)


getContext() — это метод класса View, поэтому вы можете использовать его следующим образом:
DBHelper myDb = new DBHelper(view.getContext());
где view — это некоторый View.
Если вы хотите создать экземпляр класса внутри класса активности, вы можете использовать:

DBHelper myDb = new DBHelper(this); 

or

DBHelper myDb = new DBHelper(getApplicationContext());
person forpas    schedule 14.10.2018
comment
BHelper mydb = новый DBHelper(view.getContext()); при использовании этого выдает ошибку, говорящую о том, что не удается разрешить представление символа. - person vio; 14.10.2018
comment
Вместо view используйте в своей активности любой View. - person forpas; 14.10.2018
comment
При использовании View вместо просмотра выдает ошибку Нестатический метод getContext() не может быть указан из статического контекста Спасибо! - person vio; 14.10.2018
comment
Не используйте View, это имя класса. Используйте имя представления в своей деятельности или просто используйте this - person forpas; 14.10.2018