0

I am using external database in application. I would like to delete specific row from table quotes (Int ID, String quoteText, String quoteWiki). I am trying something like this in Bindviewholder:

        holder.mDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        mDatabaseHolder= new DatabaseHelper(mCtx);
        int ID= quoteModel.getID();
            mDatabaseHolder.openDatabase();
            String table = "quotes";
            String whereClause = "ID=?";
            String[] whereArgs = new String[] {String.valueOf(ID)};
            sqLiteDatabase.delete(table, whereClause, whereArgs);
            mDatabaseHolder.closeDatabase();

        }
    });

Unfortunately i've got error:

java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.delete(java.lang.String, java.lang.String, java.lang.String[])' on a null object reference

DatabaseHolder

  public List<QuoteModel> getListQuotes() {
    QuoteModel quotesModel = null;
    List<QuoteModel> quotesModelList = new ArrayList<>();
    openDatabase();


    Cursor cursor = mDatabase.rawQuery("SELECT * FROM quotes", null);

    cursor.moveToFirst();

    while (!cursor.isAfterLast()) {
        quotesModel = new QuoteModel(cursor.getString(0),cursor.getString(1),cursor.getInt(2));
        quotesModelList.add(quotesModel);
        cursor.moveToNext();
    }

    cursor.close();

    Quotes();
    closeDatabase();

    return quotesModelList;
}
Léa Gris
  • 17,497
  • 4
  • 32
  • 41
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](https://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – forpas Jul 24 '19 at 21:49
  • Looks like you haven't made an instance of sqLiteDatabase, so it is null. – SadClown Jul 24 '19 at 22:16

1 Answers1

0

where is sqLiteDatabase assigned?

mDatabaseHolder.openDatabase();
String table = "quotes";
String whereClause = "ID=?";
String[] whereArgs = new String[] {String.valueOf(ID)};

SQLiteDatabase sqLiteDatabase = mDatabaseholder.getWritableDatabase()

sqLiteDatabase.delete(table, whereClause, whereArgs);
mDatabaseHolder.closeDatabase();
Dominik Wuttke
  • 535
  • 1
  • 4
  • 12
  • Sorry, I am beginner in Android. Is this what i need? mDatabaseHolder.getWritableDatabase(); I can't directly access sqLiteDatabase. –  Jul 25 '19 at 09:50
  • yes. I edited my Post to create an instance of a SQLiteDatabase before accessing the Database. – Dominik Wuttke Jul 25 '19 at 11:46