2012-10-08 142 views
0

我想在android上保存数据与数据库。Android的getWritableDatabase()抛出空指针异常

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

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,其不计哪里......我tryied:

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(); 
    } 

但是当我打电话给功能getWritableDatabase()时,我仍然得到NullPointerException
我必须知道函数CreateTable不会是静态的,因为它会放入初始值。

我哪里错了?

+0

什么是表格? –

+0

我写过一个类,在我的数据库表中包含操作 – nrofis

回答

0

通过

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

更换

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

当你的onCreate的时候,你的可写数据库是获得创造的过程。 这里的onCreate方法与您的活动中的方法不同。 onCreate for SQLiteOpenHelper仅在数据库第一次创建时被调用。

+1

好吧,那么当数据库不是新的时候,我将如何初始化变量? – nrofis