#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. да, это работает! но вызвать список обновлений, в котором содержится установленный адаптер, теперь является задачей, в которой я не могу передать контекст из адаптера