我正在尝试使用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
不是静态的,因为它会放置初始值。
我哪里错了?
答案 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仅在第一次创建数据库时调用。