Android database ,按频率查询
来源:互联网 发布:安卓手机mac地址怎么查 编辑:程序博客网 时间:2024/05/16 06:14
最近一个关于foods应用中,用户需求中包含“Recent”foods列表,和“highfrequent”foods list。
1.对于recent foods list,可以简单的将每次添加的food 插入到数据库的表中。然后做简单的查询就可以。这里面可以有重复记录,不会对重复foods进行删除。这有一个好处是,用户可以看到自己添加的foods的历史记录(recent)列表,android中用ContentResolver结构就可以实现。
2.对于frequent foods list,在列表中不能出现重复数据,而且要求频率高的数据排在前面。
这时直接用ContentResolver进行查询很难实现,需要更改数据库的provider程序。
下面就是实现按照频率查询的方法。
1.查询结果所要的结构。public static String sProjection [] = new String[]{COL_DESCRIPTION,COL_TOTAL_CALORIES,COL_SERVING_SIZE,COL_SERVING_UNIT,COL_TOTAL_FAT,COL_SATURATED,COL_POLYUNSATURATED,COL_MON_SATURATED,COL_CHOLESTEROL,COL_SODIUM,COL_POTASSIUM,COL_TOTAL_CARBS,COL_DIETARY_FIBER,COL_SUGARS,COL_PROTEIN,COL_VITAMIN_A,COL_VITAMIN_C,COL_CALCIUM,COL_IRON};2.Provider中的实现public final static String FREQUENT_QUERY = "FREQUENT";public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {SQLiteQueryBuilder qb = new SQLiteQueryBuilder();SQLiteDatabase db = dbHelper.getReadableDatabase();qb.setTables(RecentFoodDBData.TABLE_NAME); //使用selection作为复用字段。如果是查询频率,使用数据库的rawQuery方法查询,然后结果按照数量排序。if (selection !=null && selection.trim().equals(FREQUENT_QUERY)){//order by frequent.String columns = "";for (String s : projection){columns += s + ",";}String sql = "SELECT "+ columns +" COUNT(*) AS count FROM "+ RecentFoodDBData.TABLE_NAME + " GROUP BY 1 ORDER BY count DESC";Cursor c = db.rawQuery(sql, null);c.setNotificationUri(getContext().getContentResolver(), uri);return c;}else{Cursor c = qb.query(db, projection, selection, null, null, null, sortOrder);c.setNotificationUri(getContext().getContentResolver(), uri);return c;}}3.在程序中使用Cursor cursor = resolver.query(RecentFoodDBData.CONTENT_URI, RecentFoodDBData.sProjection, RecentFoodDBContentProvider.FREQUENT_QUERY, null, null);
0 0
- Android database ,按频率查询
- Database: android.database.CursorIndexOutOfBoundsException
- QueryPerformanceCounter()查询时钟频率问题
- CENTOS LINUX查询内存大小、频率
- Android-database
- context.Database.SqlQuery<>()查询
- android 2.3 频率管理
- android 2.3 频率管理
- SQL 查询重复出现次数最多的记录,按出现频率排序(SQL语句)
- 各搜索引擎的关键字搜索频率查询
- 查询oracle24小时内切换频率
- 使用缓存降低数据库查询频率
- 【Database】查询语句语法浅析
- android acitivty 刷新频率 疑问
- android FM搜索频率流程
- Android/linux修改cpu频率
- [Android Develop_003]-Android Database
- #android training# android.database
- 一切成功源于积累——20141030 美联储纪要 风险警示
- 面试2014-10-29
- css position relative
- 代码错误更改的体会
- ubuntu 系统时间错误导致编译不过的问题
- Android database ,按频率查询
- 师傅家减肥方式是反复看师傅开始看妇科师傅
- inode与连接
- 第26题 String to Integer (atoi)
- EXTJS4.1我需要解决的问题
- 菜鸟nginx源码剖析数据结构篇(四)红黑树ngx_rbtree_t
- 大公司的边角料人才
- 最大熵模型中的数学推导
- LeetCode Triangle