@Nullable
    public static Waypoint loadWaypoint(final int id) {
        if (id == 0) {
            return null;
        }

        return withAccessLock(() -> {

            init();

            final Cursor cursor = database.query(
                    dbTableWaypoints,
                    WAYPOINT_COLUMNS,
                    "_id = ?",
                    new String[]{Integer.toString(id)},
                    null,
                    null,
                    null,
                    "1");

            Log.d("DataStore.loadWaypoint(" + id + ")");

            final Waypoint waypoint = cursor.moveToFirst() ? createWaypointFromDatabaseContent(cursor) : null;

            cursor.close();

            return waypoint;
        });
    }
creates a Cache from the cursor. Doesn't next.

@return Cache from DB
main/src/main/java/cgeo/geocaching/storage/DataStore.java