概述
在查询媒体库的时候发现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语句异常所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复