使用selectionArgs编写查询SQLite

时间:2014-09-15 01:25:27

标签: android sql android-sqlite

我在String语句中使用selectionArgs query()。我想写一个带有5个参数的query。如果其中一个参数为null,我不想使用它。我该怎么办?

例如:

Cursor cur = sqlite_obj.query(TableName, null, "UID = ? AND Age > ? AND Room = ? AND Adre = ?", new String[] { "31", "" ,"3", ""}, null, null, null, null);

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您坚持使用selectionArgs,则可以执行以下操作:

首先检查你的参数,然后根据它构建你的查询,例如:

    String[] myArray = new String[] { "31", "" ,"3", ""};

    List<String> myQueryValue = new ArrayList<String>();

    String myQueryParam = "";

    if(!myArray[0].equal("")){

       myQueryParam =  myQueryParam + "UID = ? AND ";
       myQueryValue.add(myArray[0]);
    }

    if(!myArray[1].equal("")){

         myQueryParam =  myQueryParam + "Age > ? AND "; 
         myQueryValue.add(myArray[1]);
    }

   if(!myArray[2].equal("")){

         myQueryParam =  myQueryParam + "Room = ? AND ";
         myQueryValue.add(myArray[2]);
    }

    if(!myArray[3].equal("")){

         myQueryParam =  myQueryParam + "AND Adre = ?";
         myQueryValue.add(myArray[3]);
    }

并在最后

String[] finalValue = new String[ myQueryValue.size() ];
myQueryValue.toArray( finalValue );
Cursor cur = sqlite_obj.query(TableName, null, myQueryParam, finalValue , null, null, null, null);

您还可以使用loop创建您的值和查询参数。