Java db=DBH.getWritableDatabase();==无效的怎么办?

Java db=DBH.getWritableDatabase();==无效的怎么办?,java,sqlite,Java,Sqlite,我是android新手,遇到了一个问题:我决定在一个单独的类中创建一个从数据库读取数据的方法。当我使用getWritableDatabase()方法时;出现一个错误: 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.io.File android.content.Context.getDatabasePath(java.lang.String)” 据我所知,db是空的,但发生了什么以及如何解决它我不知道 public void rea

我是android新手,遇到了一个问题:我决定在一个单独的类中创建一个从数据库读取数据的方法。当我使用getWritableDatabase()方法时;出现一个错误:

原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.io.File android.content.Context.getDatabasePath(java.lang.String)”

据我所知,db是空的,但发生了什么以及如何解决它我不知道

public void readDB(){

数据库助手


我需要做什么才能确保没有错误?

您作为
上下文
传递的
这个
是什么?readDB Extendes AppCompactActivity方法所在的类,您想知道这个吗?如果不想知道,请告诉我您的意思,我是新来的,对这方面的了解仍然很差。您如何实例化该活动?(你不应该自己做。)嗯……不可能……结果是上下文为null,因此该方法不起作用。这里完全不需要AppCompatActivity。但是如果删除它,则会发生错误。应该怎么做?如果readDB()的代码与你发布的完全相同,则上下文不能为null。这是你的实际代码吗?
DBH = new DBHelper(this);
        db = DBH.getWritableDatabase();
        c = db.rawQuery("select * from "+ DBHelper.TABLE_NAME, null);
public class DBHelper extends SQLiteOpenHelper {
    Context mContext;
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "ActionsDB";
    public static final String TABLE_NAME = "ActionTable";


    public static final String KEY_NAME = "name";
    public static final String KEY_ID = BaseColumns._ID;
    public static final String KEY_TYPE = "type";
    public static final String KEY_SWITCH = "switch";
    public static final String KEY_BALANCE = "balance";
    public static final String KEY_BALANCEND = "balancend";
    public static final String KEY_TARGET = "target";
    public static final String KEY_CURRENCY = "currency";

    private static final String CREATE_TABLE ="create table " + TABLE_NAME + " ("
            + KEY_ID + " INTEGER primary key autoincrement, "
            + KEY_NAME + " TEXT not null, "
            + KEY_TYPE + " INTEGER, "
            + KEY_SWITCH + " INTEGER, "
            + KEY_BALANCE + " REAL, "
            + KEY_BALANCEND + " REAL, "
            + KEY_TARGET +"  REAL, "
            + KEY_CURRENCY + " TEXT);";



    public DBHelper(@Nullable Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        mContext = context;
    }

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

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS TABLE_NAME");
        onCreate(db);


    }

}