gpt4 book ai didi

Android:对 CONTENT_URI 的 sql 查询

转载 作者:行者123 更新时间:2023-11-30 04:13:31 27 4
gpt4 key购买 nike

各位机器人开发者大家好!请你帮忙解答一个问题。我在努力

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。

提前致谢!

最佳答案

不要在 Android 中进行 SQL 注入(inject)。Google 会修复它的错误。

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

关于Android:对 CONTENT_URI 的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10432717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com