Android getWritableDatabase()抛出NullPointerException

时间:2012-10-08 17:18:14

标签: android database nullpointerexception

我正在尝试使用android上的数据库保存数据。

我编写了一个处理数据库的类,就像我在几个例子中看到的那样。

public class MyDatabase extends SQLiteOpenHelper
{
    private Table users;

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

    public void onCreate(SQLiteDatabase db)
    {
        users.CreateTable();
    }

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

    }
}

但是当我尝试初始化变量users时,就像那样:

users = new Table(getWritableDatabase());

我得到NullPointerException,而不是米......我试过了:

    public MyDatabase(Context context)
    {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        users = new Table(getWritableDatabase());
    }

    public void onCreate(SQLiteDatabase db)
    {
        users = new Table(getWritableDatabase());
        users.CreateTable();
    }

但是当我调用函数NullPointerException时,我仍然会getWritableDatabase() 我必须认为函数CreateTable不是静态的,因为它会放置初始值。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

替换

public void onCreate(SQLiteDatabase db)
{
    users = new Table(getWritableDatabase());
    users.CreateTable();
}

通过

public void onCreate(SQLiteDatabase db)
{
    users = new Table(db);
    users.CreateTable();
}

当您处于onCreate时,您的可写数据库正在创建中。 此处的onCreate方法与您的活动中的方法不同。 onCreate for SQLiteOpenHelper仅在第一次创建数据库时调用。