对Persisten Storage上的getWritableDatabase()的NullPointerException

时间:2014-08-01 17:09:39

标签: java android nullpointerexception persistent-storage

每当我尝试从数据库中写入或读取时,我都会在两个活动中遇到相同的错误。

Java.lang.NullPointerException

调用此方法时会抛出错误:

public void open() throws SQLException {
        database = dbHelper.getWritableDatabase();
    }

此课程包含哪些内容:

public class DriverController {

// Database fields
private Context context;
private SQLiteDatabase database;
private MySQLiteHelper dbHelper;
private String[] allColumns = { MySQLiteHelper.PROFILE_COLUMN_ID,
        MySQLiteHelper.PROFILE_COLUMN_NAME, MySQLiteHelper.PROFILE_COLUMN_DRIVERNO };

public DriverController() {
    dbHelper = new MySQLiteHelper(context);
}

public void open() throws SQLException {
    database = dbHelper.getWritableDatabase();
}

MySQLiteHelper类基于本教程。 http://www.vogella.com/tutorials/AndroidSQLite/article.html

尽管如此,我们将非常感谢您提供的任何帮助。我已经落后了。

2 个答案:

答案 0 :(得分:2)

在这一行dbHelper = new MySQLiteHelper(context);中你传递了一个空上下文,这导致getWritableDatabase()抛出一个NullPointerException

您需要有效的背景。

答案 1 :(得分:2)

dbHelper = new MySQLiteHelper(context);

实例context为null,因此在使用它之前初始化context对象或将context作为参数从调用activty传递为

public DriverController(Context context) {
    dbHelper = new MySQLiteHelper(context);
}

您必须将context从调用actvity传递给DriverController构造函数,因为context仅在活动类中可用

有关参考,请参阅您提供的link中使用的CommentsDataSource类。