mercredi 16 décembre 2015

Null pointer on database [duplicate]

This question already has an answer here:

I am getting this error:

12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:187) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at com.example.fixxxera.finalmapapp.DatabaseHandler.getExistingMarkers(DatabaseHandler.java:77) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at com.example.fixxxera.finalmapapp.RetrieveMarkers.doInBackground(RetrieveMarkers.java:25) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at com.example.fixxxera.finalmapapp.RetrieveMarkers.doInBackground(RetrieveMarkers.java:14) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:288) 12-16 21:35:47.043 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-16 21:35:47.044 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 12-16 21:35:47.044 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 12-16 21:35:47.044 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 12-16 21:35:47.044 2279-2333/com.example.fixxxera.finalmapapp W/System.err: at java.lang.Thread.run(Thread.java:818)

when i try to get all rows in database. This is my method:

 public ArrayList<Markers> getExistingMarkers() {
    ArrayList<Markers> list = new ArrayList<>();
    String query = "SELECT * FROM " + TABLE_LOCATIONS;

    Cursor curs=null;

    try{
        SQLiteDatabase db = getReadableDatabase();
        curs= db.rawQuery(query, null);
        curs.moveToFirst();
        if (curs.isFirst()){
            do {

                Markers marker = new Markers();
                marker.set_address(curs.getString(1));
                marker.set_country(curs.getString(2));
                marker.set_lat(Double.valueOf(curs.getString(3)));
                marker.set_lng(Double.valueOf(curs.getString(4)));
                marker.set_image(curs.getString(5));
                list.add(marker);
            }while(!curs.isAfterLast());
        }

    }catch(NullPointerException e){
        e.printStackTrace();
    }finally {
        if (curs != null) {
            curs.close();
        }
    }
    return list;
}

I did check when i added the markers inside and i get line numbers from my ADD method. so i am quite sure they are inside. The error shows this line:

SQLiteDatabase db = getReadableDatabase();

as a problem. I am trying to save the markers in DB and get them back after relaunching the app. They are still inside after close right?

Aucun commentaire:

Enregistrer un commentaire