您好每个机器人开发者!请你帮忙解决一个问题。 我正在尝试
Cursor cursor = getContentResolver().query(Contacts.CONTENT_URI,CONTACT_PROJECTION, n" _id = _id ) GROUP BY ("+ Calls.NUMBER, null, "cnt DESC");
它在Android 2.3.3中运行良好,但在Android 4.03上它崩溃了,因为Android 4.03不再支持GROUP BY查询。 (https://stackoverflow.com/questions/8837544/android-ics-sqlite-error)
所以我决定使用示例代码
形成URI Contacts.CONTENT_URI的原始sql查询ContentProviderClient client = getContentResolver().acquireContentProviderClient(AUTHORITY);
SQLiteDatabase dbHandle= ((MyContentProvider)client.getLocalContentProvider()).getDbHandle();
Cursor cursor = dbHandle.rawQuery("SELECT _id, date, duration, number, type, name, numbertype, COUNT(*) as cnt FROM calls WHERE ( 1=1 ) GROUP BY (number) ORDER BY cnt DESC", null);
或
SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
qb.query(db, projectionIn, selection, selectionArgs, groupBy, having, sortOrder)
有groupBy参数。
但我不明白如何在第二种情况下从CONTENT_URI或CONTENT_URI的数据库名称获取dbHandle。
提前致谢!
答案 0 :(得分:1)
不要在Android中进行SQL注入。 谷歌将修复它的错误。
应该在ContentProvider中调用GroupBy。不是ContentResolver。