private static List<List<String>> wrapRows(Cursor cursor) {
        List<List<String>> result = new ArrayList<>();

        final int numColumns = cursor.getColumnCount();
        while (cursor.moveToNext()) {
            ArrayList<String> flatList = new ArrayList<>();
            for (int column = 0; column < numColumns; column++) {
                switch (cursor.getType(column)) {
                    case Cursor.FIELD_TYPE_NULL:
                        flatList.add(null);
                        break;
                    case Cursor.FIELD_TYPE_INTEGER:
                        flatList.add(String.valueOf(cursor.getLong(column)));
                        break;
                    case Cursor.FIELD_TYPE_FLOAT:
                        flatList.add(String.valueOf(cursor.getDouble(column)));
                        break;
                    case Cursor.FIELD_TYPE_BLOB:
                        flatList.add(blobToString(cursor.getBlob(column)));
                        break;
                    case Cursor.FIELD_TYPE_STRING:
                    default:
                        flatList.add(cursor.getString(column));
                        break;
                }
            }
            result.add(flatList);
        }
        return result;
    }
Label to use when a BLOB column cannot be converted to a string.
pandora-core/src/main/java/tech/linjiang/pandora/database/DatabaseResult.java