private void updateDb(ArrayList<GolfCourse> gc) { ContentResolver cr = context.getContentResolver(); for (GolfCourse cc : gc) { // Check if course exist already in db String name = cc.getCourceName(); String tee = cc.getCourceTee(); int id = -1; String selection = TourContentProvider.KEY_COURSE_NAME + "=? AND " + TourContentProvider.KEY_COURSE_TEE + "=?"; String[] selectionArgs = {name, tee}; Cursor cur = cr.query(TourContentProvider.CONTENT_URI_COURSES, null, selection, selectionArgs, null); boolean newEntry = true; // If No Match, populate database if (cur != null) newEntry = false; // Update course ContentValues cv = new ContentValues(); cv.put(TourContentProvider.KEY_COURSE_NAME, name); cv.put(TourContentProvider.KEY_COURSE_TEE, tee); cv.put(TourContentProvider.KEY_COURSE_PAR, cc.getCourcePar()); cv.put(TourContentProvider.KEY_COURSE_SLOPE, cc.getCourceSlope()); cv.put(TourContentProvider.KEY_COURSE_VALUE, cc.getCourceValue()); cv.put(TourContentProvider.KEY_COURSE_LENGTH, cc.getCourceLength()); if (newEntry) { Uri courseId = cr.insert(TourContentProvider.CONTENT_URI_COURSES, cv); id = Integer.parseInt(courseId.getPathSegments().get(1)); } else { cur.moveToFirst(); int key_index = cur.getColumnIndexOrThrow(TourContentProvider.KEY_ID); id = cur.getInt(key_index); cr.update( Uri.withAppendedPath(TourContentProvider.CONTENT_URI_COURSES, Integer.toString(id)), cv, null, null); } // update holes for (int i = 1; i <= 18; i++) { cv = new ContentValues(); cv.put(TourContentProvider.KEY_COURSE_ID, id); cv.put(TourContentProvider.KEY_HOLE_NAME, cc.getHoleName(i)); cv.put(TourContentProvider.KEY_HOLE_NR, i); cv.put(TourContentProvider.KEY_HOLE_PAR, cc.getHolePar(i)); cv.put(TourContentProvider.KEY_HOLE_INDEX, cc.getHoleIndex(i)); cv.put(TourContentProvider.KEY_HOLE_LENGTH, cc.getHoleLength(i)); if (newEntry) cr.insert(TourContentProvider.CONTENT_URI_HOLES, cv); else { selection = TourContentProvider.KEY_COURSE_ID + "=? AND " + TourContentProvider.KEY_HOLE_NR + "=?"; selectionArgs = new String[2]; selectionArgs[0] = Integer.toString(id); selectionArgs[1] = Integer.toString(i); cur = cr.query(TourContentProvider.CONTENT_URI_HOLES, null, selection, selectionArgs, null); cur.moveToFirst(); int key_index = cur.getColumnIndexOrThrow(TourContentProvider.KEY_ID); int hole_id = cur.getInt(key_index); cr.update( Uri.withAppendedPath( TourContentProvider.CONTENT_URI_HOLES, Integer.toString(hole_id)), cv, null, null); } // else } // for } // for } // updatedb