Android Sql。查询单个coloumn,多个值

时间:2015-05-17 18:33:10

标签: android sqlite

我有三列数据库。 我想基于一个可以有多个值的列来查询数据库。

对于单个参数,我们可以使用cardName为String []

的常规查询方法
 Cursor cursor = database.query(Database.TABLE_COUPON_CARD, allColumns,Database.COLUMN_CARD_NAME + " = ?", cardName, null, null,null);

但如果有多个值,我会得到Android SQLite cannot bind argument exception

对于同一列的多个值,我们可以使用IN statement,但是,我在这里如何编写QUERY或如何构建rawQuery

String whereClause = Database.COLUMN_CARD_NAME+ " IN(?)";
         Cursor cursor = database.query(Database.TABLE_COUPON_CARD, allColumns,whereClause,new String[][]{cardName}, null, null,null);

Android QUERY不接受数组数组。 正确的查询应该是什么?

临时解决方案 目前我已经创建了一个动态创建子句的方法。

 private static StringBuilder buildInClause(String[] myStringArray){
    StringBuilder fullString=new StringBuilder();
    fullString.append("(");
    for(int i=0;i<myStringArray.length;i++){
        fullString.append(" '"+myStringArray[i]+"' ");
        if(i!=myStringArray.length-1){
            fullString.append(",");
        }

    }
    fullString.append(")");
    return fullString;

}

如果有人有任何其他解决方案,请分享。

1 个答案:

答案 0 :(得分:1)

有两个值: // single line drawing control _singleLineControl = new OpenLayers.Control.DrawFeature( _singleLineLayer, OpenLayers.Handler.Path, { eventListeners: { "featureadded": drawingFinished }, handlerOptions: { maxVertices: 2, single: true, freehand: false, } }); viewer.addControl(_singleLineControl); _singleLineControl.deactivate(); 。对于三个值:IN(?,?)。明白了吗?每个IN(?,?,?)对应于选择args数组中的单个文字。