Android Content Provider - 使用查询方法进行插入、删除和更新
Android Content Provider - Using Query Method To Insert, Delete, and Update
我一直在通过阅读 Android Developer Fundamentals (Version 1) 来研究 Content Provider。
在“11.1 通过内容提供商共享数据”/"The query() method" 部分下,有一条注释指出
Note: The insert, delete, and update methods are provided for
convenience and clarity. Technically, the query method could handle
all requests, including those to insert, delete, and update data.
如何使用查询方法插入/删除/更新数据?查询方法具有以下签名并且不接受自定义 SQL 字符串。
public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder){}
我找不到任何资源来说明如何做到这一点。似乎都使用了提供的方法。
坦率地说,该培训指南中的那项工作确实很糟糕。只会让人迷惑。
我猜他们的意思是 query()
没有什么神奇的东西可以强制它只执行 SQL SELECT
语句。 ContentProvider
是一个门面——你可以用它来存储和检索几乎任何你想要的东西,而不仅仅是 SQLite。
所以,您可以使用 query()
方法:
- 检查
Uri
- 寻找它的形式
content://your.authority/something/insert/put/data/here
- 解析
Uri
以获得 put
、data
和 here
值
- 将 table 中的那些插入到一些预先确定的列下
- Return一个空
MatrixCursor
或者,它可以:
- 检查
Uri
- 寻找它的形式
content://your.authority/something/insert
- 插入一行,使用
projection
作为列,使用 selectionArgs
作为要放入这些列的值
- Return一个空
MatrixCursor
我不知道为什么有人会那样做,但这肯定是可能的。
我一直在通过阅读 Android Developer Fundamentals (Version 1) 来研究 Content Provider。
在“11.1 通过内容提供商共享数据”/"The query() method" 部分下,有一条注释指出
Note: The insert, delete, and update methods are provided for convenience and clarity. Technically, the query method could handle all requests, including those to insert, delete, and update data.
如何使用查询方法插入/删除/更新数据?查询方法具有以下签名并且不接受自定义 SQL 字符串。
public Cursor query(Uri uri, String[] projection, String selection,String[] selectionArgs, String sortOrder){}
我找不到任何资源来说明如何做到这一点。似乎都使用了提供的方法。
坦率地说,该培训指南中的那项工作确实很糟糕。只会让人迷惑。
我猜他们的意思是 query()
没有什么神奇的东西可以强制它只执行 SQL SELECT
语句。 ContentProvider
是一个门面——你可以用它来存储和检索几乎任何你想要的东西,而不仅仅是 SQLite。
所以,您可以使用 query()
方法:
- 检查
Uri
- 寻找它的形式
content://your.authority/something/insert/put/data/here
- 解析
Uri
以获得put
、data
和here
值 - 将 table 中的那些插入到一些预先确定的列下
- Return一个空
MatrixCursor
或者,它可以:
- 检查
Uri
- 寻找它的形式
content://your.authority/something/insert
- 插入一行,使用
projection
作为列,使用selectionArgs
作为要放入这些列的值 - Return一个空
MatrixCursor
我不知道为什么有人会那样做,但这肯定是可能的。