我有三列数据库。 我想基于一个可以有多个值的列来查询数据库。
对于单个参数,我们可以使用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;
}
如果有人有任何其他解决方案,请分享。
答案 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数组中的单个文字。