android 日常(十九)

  • android ContentResolver 对数据库操作 in/not in的用法
List<String> threadIdList = new ArrayList<String>();
        List<String> parameters = new ArrayList<String>();
        Uri uri = MessageSQL.CONTENT_URI;
        String[] projection = {new String("distinct "+MessageSQL.thread_id)};
        String selection = MessageSQL.boxid+"= ?";
        String[] selectionArgs1 = {String.valueOf(MessageSQL.MESSAGE_TYPE_FAILED)};
        Cursor cursor = getContext().getContentResolver().query(uri, projection, selection, selectionArgs1, null);
        
        
        while(cursor.moveToNext()){
            int threadId = cursor.getInt(0);
            threadIdList.add(String.valueOf(threadId));
            parameters.add("?");
        }
        cursor.close();
        
        
        Uri threadUri = QThread.THREAD_URI;
        ContentResolver mContentResolver = getContext().getContentResolver();
        ContentValues values = new ContentValues();
        values.put(QThread.error, 0);
        String where = QThread._ID+" not in ("+TextUtils.join(",", parameters)+")";
        String[] selectionArgs2= threadIdList.toArray(new String[threadIdList.size()]);
        mContentResolver.update(threadUri, values, where, selectionArgs2);

此处的解决方法是先获取参数,根据参数的个数设置“?”,
String where = QThread._ID+" not in ("+TextUtils.join(",", parameters)+")";,然后在update方法中将
参数数组selectionArgs传入,效果相当于sql中的
select <YOUR SELECTIONS> from <YOUR TABLE NAME> where *** in/not in (arg1,arg2,....)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容