开发者

Android SQLite and Bind Variables Problem

I'm trying to do a relatively simple bitwise query operation with SQLite on Android. When I use bind variables, I get no data returned when I believe should get some rows back. If I hardcode the bind variable's value directly into the SQL, it works just fine. I'm thinking I have some silly syntax issue somewhere, but I just can't see it.

So this code works just fine:

String selection = new String(FLAGS + " & 2 = 2");
cursor = db.query(TABLE_NAME, ALL_COLUMNS, selection,
    null, null, null, null, null );

This code however (using bind variables), returns no rows:

String selection = new String(FLAGS + " & ? = ?");
String[] selectionArgs = new String[]{"2", "2"};
cursor = db.query(TABLE_NAME, ALL_COLUMNS, selection,
    selectionArgs, null, null, null, null );

They both result into a syntactically identical query being built when I inspect the cursor's mQuery property through the debugger. The latter does have the mBindArgs property populated correctly as well. I'm at a loss as to how this could be failing. There are no exceptions thrown or anything, it just doesn't return any rows.

I can take the failing query, and manually swap the question marks fo开发者_JS百科r the two's and paste it into the ADB SQLite command line interface and it works just fine as well.


If I am right the second query produces following condition:

& '2' = '2'

instead of

& 2 = 2

Try replacing & with AND

Make sure you have no ? characters in FLAG constant.

Besides what is a point of this logical condition?


I was facing the same problem as yours. As radek-k said, the query compares string.

One solution that may be performed is to use the following:

String selection = new String(FLAGS + " & ? = (0|?)");
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜