Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在“中传递两个或多个选择参数”;查询「;方法_Android - Fatal编程技术网

Android 如何在“中传递两个或多个选择参数”;查询「;方法

Android 如何在“中传递两个或多个选择参数”;查询「;方法,android,Android,我使用的是查询方法,但我不知道如何在查询方法中传递多个选择参数 我的查询方法应返回与此sql语句相同的结果: SELECT _id FROM CONATCT_TAGS WHERE TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR

我使用的是查询方法,但我不知道如何在查询方法中传递多个选择参数

我的查询方法应返回与此sql语句相同的结果:

SELECT _id FROM CONATCT_TAGS WHERE TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname'; 从标记1='tagname'或 TAG2='tagname'或 TAG3='tagname'或 TAG4='tagname'或 TAG5='tagname';
试试那样的

SQLiteDatabase db = YourDatabaseHelper.getReadableDatabase();
String TABLE = "CONTACT_TAGS";
String[] FIELDS = { "_id" };
String WHERE =  "TAG1='tagname' OR TAG2='tagname' OR TAG3='tagname' OR TAG4='tagname' OR TAG5='tagname' ";
// Execute
cursor = db.query(TABLE, FIELDS, WHERE, null, null, null, null);
如果阅读该方法的文档,您会发现
选择的定义如下:

选择:声明返回哪些行的筛选器,格式为 SQL WHERE子句(不包括WHERE本身)。传递空遗嘱 返回给定表的所有行


如果您想在Android SQLite连接中使用内置优化,您可以这样做:

String table = "CONTACT_TAGS";
String[] columns = {"_id"};
String where = "TAG1=? OR TAG2=? OR TAG3=? OR TAG4=? OR TAG5=?";
String[] args = {"tagname", "tagname", "tagname", "tagname", "tagname"};

SQLiteDatabase db = myDatabaseHelper.getReadableDatabase();
Cursor cursor = db.query(table, columns, where, args, null, null, null);

与@raultum的解决方案不同的是,您可以让数据库连接器决定如何解释提交的数据。从安全的角度来看,这非常有趣。

您可以这样使用它


字符串strSelection=android.provider.CallLog.Calls.TYPE+“=”+CallLog.Calls.MISSED_TYPE+”或“+android.provider.CallLog.Calls.TYPE+”=”+CallLog.Calls.INCOMING_TYPE

试试这个,这段代码我使用media store获取所有文档文件,使用带有多个参数的单个查询

 String pdf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
    String doc = MimeTypeMap.getSingleton().getMimeTypeFromExtension("doc");
    String docx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("docx");
    String xls = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xls");
    String xlsx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xlsx");
    String ppt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("ppt");
    String pptx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pptx");
    String txt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("txt");
    String rtx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtx");
    String rtf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtf");
    String html = MimeTypeMap.getSingleton().getMimeTypeFromExtension("html");

    //Table
    Uri table = MediaStore.Files.getContentUri("external");
    //Column
    String[] column = {MediaStore.Files.FileColumns.DATA};
    //Where
    String where = MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
            +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?";
    //args
    String[] args = new String[]{pdf,doc,docx,xls,xlsx,ppt,pptx,txt,rtx,rtf,html};

    Cursor fileCursor = getActivity().getContentResolver().query(table, column, where, args, null);

    while (fileCursor.moveToNext()) {

    //your code 


    }

您希望按照
args
参数正确使用此解决方案来避免SQL注入有人使用过此解决方案吗?当我尝试时,它会在所有字段中保留“?”而不是在我的args中进行子绑定。