Android java : Ошибка в базе данных SQLiteDatabase db = this.getWritableDatabase();

#java #android #android-sqlite

Вопрос:

Я новичок в Android java.

Ошибка в SQLiteDatabase db = this.getWritableDatabase(); строке в

 public boolean deleteItem(Todomodel todomodel){

    SQLiteDatabase db = this.getWritableDatabase(); //HERE
    ContentValues cv = new ContentValues();
    int numb = todomodel.getId();
    String whereClause = "id=?";
    String whereArgs[] = {String.valueOf(numb)};
    db.delete("CUSTOMER_TABLE", whereClause, whereArgs);
    db.close();

    return false;
}
 

ошибка :

 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.monday, PID: 9794
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.File android.content.Context.getDatabasePath(java.lang.String)' on a null object reference
        at android.content.ContextWrapper.getDatabasePath(ContextWrapper.java:330)
        at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:292)
        at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:238)
        at com.example.monday.database.deleteItem(database.java:72)
 

Я уже вызвал getWritableDatabase в функции insert.
Но когда я снова попытаюсь писать. Это не работает.

Комментарии:

1. проверьте контекст вашей базы данных, если вы передаете ее, проверьте права доступа к хранилищу для чтения/записи, проверьте, инициализируете ли вы или открываете свою базу данных, прежде чем выполнять запрос!

2. @M. BilalAsif Я проверил различные сайты, и все они выглядели одинаково. Что вы имеете в виду, передавая контекст. Я передал модель функции, и я получаю правильный вывод с другой стороны. и при первом вызове класса базы данных я передал this.mainactivity..

3. хорошо, проверьте свой путь к базе данных, это следует тщательно проверить!

Ответ №1:

Вам нужно передать допустимое Context в свой SQLiteOpenHelper конструктор.

Комментарии:

1. Я прошел это. Mainactiviy к при создании объекта для класса базы данных, как я сделал для функции вставки, которая работает идеально.

2. Контекст все еще может быть недействительным. Пожалуйста, опубликуйте код о том, как вы создаете помощника по БД, а также, возможно, как вы вызываете этот код.

3. да, это работает! но вызвать список обновлений, в котором содержится установленный адаптер, теперь является задачей, в которой я не могу передать контекст из адаптера