Android SQLite getReadableDatabase()返回NULL

Android SQLite getReadableDatabase()返回NULL,android,database,sqlite,nullpointerexception,Android,Database,Sqlite,Nullpointerexception,我正在使用Android的SQLite根据一些文件创建一个级别数据库。我首先创建一个SQLiteOpenHelper,并在其上调用getReadableDatabase()或getWritableDatabase(),以便调用onCreate()方法并创建我的数据库: @Override //Main Activity public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

我正在使用Android的SQLite根据一些文件创建一个级别数据库。我首先创建一个SQLiteOpenHelper,并在其上调用getReadableDatabase()或getWritableDatabase(),以便调用onCreate()方法并创建我的数据库:

@Override //Main Activity
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    dbHelper = new DbOpenHelper(this);
    database = dbHelper.getWritableDatabase();  //is a field
-

我还尝试在loadLevelData()方法内调用getWritableDatabase(),结果相同。
我看到这是一个很常见的问题,但是大多数关于它的线程没有任何解决方案


请:“(

为什么要从OpenHelper内部的活动访问实例变量?如果我正确理解了您的代码,您的
loadLevelData()
方法是OpenHelper的方法。而不是您拥有的,为什么不这样做:

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

// Load data into the database on creation
private void loadLevelData(SQLiteDatabase db) {
    ...
    db.insert(DB_TABLE_NAME, null, info);
} 

问题的根源在于,当您在DbOpenHelper中向下访问时,活动中的
数据库
实例变量没有被赋值……您仍然在创建数据库的调用中,该调用恰好是
dbHelper.getWritableDatabase()
--分配的结果尚未返回。

为什么要从open helper内部的活动访问实例变量?如果我正确理解了您的代码,您的
loadLevelData()
方法是open helper的方法。与您拥有的方法不同,为什么不这样做:

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

// Load data into the database on creation
private void loadLevelData(SQLiteDatabase db) {
    ...
    db.insert(DB_TABLE_NAME, null, info);
} 

问题的根源在于,当您在DbOpenHelper中向下访问时,活动中的
数据库
实例变量没有被赋值……您仍然在创建数据库的调用中,该调用恰好是
dbHelper.getWritableDatabase()
--分配的结果还没有返回。

您的DbOpenHelper是否扩展了SQLiteOpenHelper?数据库的类型是什么?是的,数据库是SQLiteDatabase。您的DbOpenHelper是否扩展了SQLiteOpenHelper?数据库的类型是什么?是的,数据库是SQLiteDatabase。当然!它基本上是指它自己,带有这是创造。我首先要解决一些其他问题,结果是,但这真的很有帮助。当然!它基本上是指它自己,在它的创造中。我首先要解决一些其他问题,结果是,但这真的很有帮助。