1. Query() 与 SQL 查询对比。
query() 参数 | SELECT 关键字/参数 | 说明 |
---|---|---|
Uri | FROM table_name | Uri 映射至提供程序中名为 table_name的表。 |
projection | col,col,col,... | projection 是应该为检索到的每个行包含的列的数组。 |
selection | WHERE col =value | selection 会指定选择行的条件。 |
selectionArgs | (没有完全等效项。选择参数会替换选择子句中 ? 占位符。) | |
sortOrder | ORDER BYcol,col,... | sortOrder 指定行在返回的 Cursor 中的显示顺序。 |
content://user_dictionary/words:user_dictionary 字符串是提供程序的授权,words 字符串是表的路径。 字符串 content://(架构)始终显示,并将此标识为内容 URI。
3.请求权限:您需要使用<uses-permission>
元素和提供程序定义的准确权限名称,在清单文件中指明您需要此权限
4.构建查询:用于指定要检索的行的表达式分割为选择子句和选择参数。 选择子句是逻辑和布尔表达式、列名称和值(变量 mSelectionClause
)的组合。 如果您指定了可替换参数 ?
而非值,则查询方法会从选择参数数组(变量 mSelectionArgs
)中检索值。
5.防止恶意输入:可使用一个用于将 ?
作为可替换参数的选择子句以及一个单独的选择参数数组。 执行此操作时,用户输入直接受查询约束,而不解释为 SQL 语句的一部分。 由于用户输入未作为 SQL 处理,因此无法注入恶意 SQL。请使用此选择子句,而不要使用串连来包括用户输入
6.将 Intent 发送至具有权限的应用,然后接收回包含“URI”权限的结果 Intent。 这些是特定内容 URI 的权限,将持续至接收该权限的 Activity 结束