- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用我的自定义 ContentProvider 与 sqlite 数据库进行通信。我想在一个列表(使用 ListFragment)上显示来自两个表(具有多对多关系)的数据。对于这种情况,我能想到的唯一解决方案是使用 rawQuery。问题是,如果这是一个好的做法,还是应该以其他方式解决这个问题?
表格示例:
表 A:ID,COLUMN_FROM_A
表 B:ID,COLUMN_FROM_B
加入表AB:ID、FK_ID_A、FK_ID_B
ContentProvider 中被覆盖的查询方法示例:
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
Cursor cursor = null;
int uriType = URIMatcher.match(uri);
switch (uriType) {
case TABLE_A_URI:
queryBuilder.setTables("TABLE_A");
cursor = queryBuilder.query(databaseHelper.getReadableDatabase(), projection, selection, selectionArgs, null, null, sortOrder);
break;
case TABLE_B_URI:
queryBuilder.setTables("TABLE_B");
cursor = queryBuilder.query(databaseHelper.getReadableDatabase(), projection, selection, selectionArgs, null, null, sortOrder);
break;
case TABLE_JOIN_A_B_URI:
cursor = databaseHelper.getReadableDatabase().rawQuery("select a.COLUMN_FORM_A, b.COLUMN_FROM_B from TABLE_A a, TABLE_B b, TABLE_AB ab where ab.FK_ID_A=a.ID and ab.FK_ID_B=b.ID", null);
break;
default:
throw new IllegalArgumentException("Unknown URI");
}
cursor.setNotificationUri(getContext().getContentResolver(), uri);
return cursor;
}
最佳答案
这是一种很好的常见做法,在这种情况下非常合适。
我没有预见到任何问题,我们已经在很多应用程序中使用了它。
关于android - 在 ContentProvider 中使用 rawQuery 是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578857/
我正在开发一个应用程序,我希望它同时适用于 Android 和 Blackberry(将来可能适用于 JavaME)。业务逻辑对所有平台都是通用的 - 因此,代码中的相应层也是如此。 但我也有一个数据
谁能告诉我如何创建一个 ContentProvider,它可以查询多个数据库/ContentProvider 以获得 SearchView 提供的搜索建议。 最佳答案 使用 ContentProvid
我想将一个通用的 POJO 放入 ContentValues 并在 ContentProvider 中解码。 我一直在绞尽脑汁:Parcelables、ContentValues 和插入 SQLite
我在 AsyncTask 中有一个 ContentProvider 访问权限,在手机上查找存储在 sqlite 中的一些数据时通常工作正常。 不过,我还有一些其他后台服务可以进行网络检查以及下载和更新
我正在尝试使用自定义 ContentProvider 提供游戏内高分。它将使用服务器连接而不是 SQLite 数据库。 现在,ContentProvider 的query()、update() 和de
Google 就 ContentProvider 中的路径遍历漏洞发出警告 https://support.google.com/faqs/answer/7496913 Implementations
我见过很多使用ContentProvider与sqlite数据库交互的例子。我在某处读到的文档说 ContentProvider 也能够与普通文件交互。但我们要怎么做呢?到目前为止,我找不到与此相关的
如何将搜索中的引号转义到 ContentProvider?像这样查询: String value = "O'Key" ;/ / string contains a quote Cursor peopl
我正在开发一个将数据存储在 SQLite 数据库中的内容提供程序。在开发过程中,我需要更改模式,或者完全删除数据库并重新构建它(在这个开发阶段我不会升级数据库)。 我找到了数据库文件,存储在/data
大家,我在看android源码。但是我找不到对我有值(value)的东西。实际上,我想知道ContentProvider是否像AIDL一样工作。你知道,AIDL可以实现两个独立应用程序之间的通信。 所
我正在尝试为我的应用程序编写一个内容提供程序,以允许访问我的应用程序存储在 SD 卡上的某些文件。文件的名称是其内容 URI 的哈希值,因此例如 content://my.app.files/test
有什么方法可以利用 ContentProvider 检查我的 Android 手机是否已连接到互联网? 谢谢 最佳答案 我想你想要ConnectivityManager .有一个例子 here . 这
是否可以在应用中初始化contentprovider? 因为我需要为每个用户/服务器组合创建一个数据库,并且我在内容提供者的 oncreate 方法中使用登录信息创建数据库! 最佳答案 根据听起来您正
仅当您需要在多个应用程序之间共享数据时才需要内容提供程序。 这是使用它的唯一目的吗?简单地从 WS 获取数据并将其写入 CP,然后在 Activity 中从这里读取怎么样? iosched呢? :这里
当我从ContentProvider 获取Cursor 对象时,那时我可以使用这个游标对象来检索所有数据。我的问题是: 游标是否包含里面的所有数据。这意味着系统已经查询并花费了时间来加载数据。 这只是
我有一些加密存储 (SQLite),想实现我自己的 ContentProvider。前提是: 只有在以下情况下才应授予/可能访问权限工作/启动我的应用程序 - 总而言之其他情况访问必须被拒绝返回给用户
我有一个 ContentProvider 子类来处理我所有的数据库工作,还有一个在后台运行的服务。 我似乎无法将服务绑定(bind)到 ContentProvider。我是否可以从 ContentPr
我有一个在 list 中声明的 ContentProvider,它是什么时候真正创建的?当应用程序启动时但在启动第一个 Activity 之前?当第一次查询/更新/插入完成时?什么时候? 最佳答案
我想实现一个操作多个表的ContentProvider。到目前为止,这是我尝试过的。我编写了一个 Java Interface,表示每个表都应在其 CRUD 类中实现的 CRUD 操作。 public
我制作了自己的 contentprovider,我通过多次插入将大量数据一次性放入其中。 该应用程序将从外部源接收数据,此时我收到大约 30 个项目(因此是插入的 30 倍)。 现在我注意到这需要很多
我是一名优秀的程序员,十分优秀!