【问题标题】:Android Content Provider Query with multiple WHERE selection具有多个 WHERE 选择的 Android 内容提供程序查询
【发布时间】:2016-10-20 18:31:53
【问题描述】:

我正在使用 androids 内容提供商 Media.Store External Image 来获取图像文件路径。

我只想获取 _ID 等于以下任何一个的图像的文件路径:- 122234、33245、66782、55782。

那么我如何构建我的 Cursor.query 来实现这一点。

我现有的代码:-

Uri uri;
Cursor cursor;
int column_index_data ;
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

String order =  MediaStore.MediaColumns.DATE_ADDED + " "+ "desc";
String[] projection = { MediaStore.MediaColumns.DATA};

cursor = getContentResolver().query(uri, projection, null, null, order);
column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);

【问题讨论】:

  • 您可以使用“IN”运算符。 w3schools.com/sql/sql_in.asp 有一般信息。
  • @Michiyo 我不能使用 rawquery,它的 contentresolver.query() 方法
  • 不需要原始查询。
  • @Michiyo 请你框定这一行 Cursor = getContentResolver().query(........) 。我没有得到你

标签: android android-contentprovider android-cursor android-query


【解决方案1】:

您应该能够直接编写 WHERE 子句。例如:

Cursor c = getContentResolver().query(uri, projection, "_id IN (1, 2, 3, 4)", null, order);

【讨论】:

  • 我从用户那里得到了 ids 的数组列表,然后我想只显示那些图像。那么如何在 where 子句中直接传递 Arraylist 呢?
  • 这不是最安全的方法,因为它可以使用户直接输入 SQL 查询,从而导致 SQL 注入尝试。无论您是直接从用户获取输入还是硬编码,使用适当的参数来查询内容提供者总是安全的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多