2012-10-08 2 views
0

Я пытаюсь сохранить данные с базой данных на android.Android getWritableDatabase() throw NullPointerException

Я написал класс, который обрабатывает базу данных, как я видел в нескольких примерах.

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

Но я все еще получаю NullPointerException, когда звоню на функцию getWritableDatabase().
Должен, чтобы функция CreateTable не была статичной, поскольку она ставит начальные значения.

Где я был неправ?

+0

Что такое 'Таблица'? –

+0

Класс I, который был написан, содержит операции в моей таблице базы данных – nrofis

ответ

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 вызывается только при создании базы данных.

+1

Итак, как я буду инициализировать переменную, когда база данных не является новой? – nrofis

Смежные вопросы