此查询会不断返回error near ?
等错误。
public Cursor getRow2( String st, String dr) throws SQLException {
String whereClause = "(adate ?) AND (station ?)";
String[] whereArgs = new String[] { dr, st };
String orderBy = "adate";
Cursor mCursor = db.query(DATABASE_TABLE, columns, whereClause, whereArgs,
null, null, orderBy);
String dr
用于“数据范围”。
dr
会获得类似BETWEEN 2004-03-01 AND 2004-06-01
的值。 dr
获取NOT NULL
,以便查询找到所有日期。 String st
用于“加油站”。
st
会获得类似'Shell'
的字符串。 st
获取NOT NULL
以便找到所有电台。非常感谢。
答案 0 :(得分:1)
您可以使用?
仅绑定文字,而不是部分表达。
(adate ?) AND (station ?)
不是有效的表达式。将第一个arg绑定到BETWEEN 2004-03-01 AND 2004-06-01
和第二个Shell
使其基本上
(adate 'BETWEEN 2004-03-01 AND 2004-06-01') AND (station 'Shell')
这在语法上是不正确的。
要将bind args与此类查询一起使用,请执行类似
的查询(adate BETWEEN ? AND ?) AND (station = ?)
将args绑定为"2004-03-01", "2004-06-01", "Shell"
。
对于“未指定”的情况,最好完全使用不同的查询。