0

我正在尝试使用 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不是静态的,因为它放置了初始值。

我哪里错了?

4

1 回答 1

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方法和你Activity中的方法不一样。SQLiteOpenHelper 的 onCreate 仅在第一次创建数据库时调用。

于 2012-10-08T17:32:00.253 回答