我是靠谱客的博主 务实音响,最近开发中收集的这篇文章主要介绍Android R适配过程中发现query的in语句异常,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在查询媒体库的时候发现query会报异常,

StringBuilder where = new StringBuilder();
where.append("_data" + " IN (");
for (int i = 0; i < videoPaths.length; i++) {
where.append(""" + videoPaths[i]);
if (i < videoPaths.length - 1) {
where.append("",");
}
}
where.append("")");
Cursor cursor = null;
try {
cursor = getActivity().getContentResolver().query(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null,
where.toString(), null, null);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.i(TAG, e.getMessage());
}

where是 _id IN ("254","226","230")

2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err: java.lang.IllegalArgumentException: Invalid token 254
2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err:     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err:     at android.content.ContentProviderProxy.query(ContentProviderNative.java:472)
2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err:     at android.content.ContentResolver.query(ContentResolver.java:1183)
2021-01-30 20:28:13.231 27938-27938/com.aidroid.video W/System.err:     at android.content.ContentResolver.query(ContentResolver.java:1115)
2021-01-30 20:28:13.232 27938-27938/com.aidroid.video W/System.err:     at android.content.ContentResolver.query(ContentResolver.java:1071)
2021-01-30 20:28:13.232 27938-27938/com.aidroid.video W/System.err:     at com.aidroid.video.myplaylist.PlaylistDetailBaseFragment.getVideoInfosByVideoPaths(PlaylistDetailBaseFragment.java:327)

 

然后我尝试直接通过命令查询,发现下面的命令是可以正常运行的.

select * from video where _id IN ("623", "596");

那in语句应该是可以正常执行的,在经过尝试发现如果将双引号修改为单引号就OK了(  """修改为"'"  )


StringBuilder where = new StringBuilder();
where.append("_id" + " IN (");
for (int i = 0; i < videoPaths.length; i++) {
where.append("'" + videoPaths[i]);
// 替换为单引号
if (i < videoPaths.length - 1) {
where.append("',");
// 替换为单引号
}
}
where.append("')");
// 替换为单引号
Log.i(TAG, where.toString());

where是 _id IN ('254','226','230')

 

最后

以上就是务实音响为你收集整理的Android R适配过程中发现query的in语句异常的全部内容,希望文章能够帮你解决Android R适配过程中发现query的in语句异常所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部