Android:对CONTENT_URI的SQL查询

时间:2012-05-03 13:45:18

标签: android sqlite android-4.0-ice-cream-sandwich android-contentresolver

您好每个机器人开发者!请你帮忙解决一个问题。 我正在尝试

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。

提前致谢!

1 个答案:

答案 0 :(得分:1)

不要在Android中进行SQL注入。 谷歌将修复它的错误。

应该在ContentProvider中调用GroupBy。不是ContentResolver。