我想在Android上用SQLite做一个相对简单的按位查询操作。当我使用绑定变量时,如果我认为应该返回一些行,则不会返回任何数据。如果我将绑定变量的值直接硬编码到SQL中,它就可以正常工作。我在想我在某处有一些愚蠢的语法问题,但我看不到它。Android SQLite和绑定变量问题
所以这段代码工作得很好:
String selection = new String(FLAGS + " & 2 = 2");
cursor = db.query(TABLE_NAME, ALL_COLUMNS, selection,
null, null, null, null, null);
此代码然而(使用绑定变量),不返回行:
String selection = new String(FLAGS + " & ? = ?");
String[] selectionArgs = new String[]{"2", "2"};
cursor = db.query(TABLE_NAME, ALL_COLUMNS, selection,
selectionArgs, null, null, null, null);
他们俩结果到语法相同的查询正在建造时,我通过调试器检查游标的mQuery属性。后者确实也具有正确填充的mBindArgs属性。我不知道这可能会失败。没有抛出异常或任何东西,它只是不返回任何行。
我可以采取失败的查询,并手动交换两者的问号,并将其粘贴到ADB SQLite命令行界面,它也可以很好地工作。
这是按位操作,我需要使用&。我正在测试标志值的哪些位被设置。 我也考虑过这些引用,但据我所知,这并不一致。显示内置SQL的游标的mQuery属性也不会在问号周围显示引号。 – Mike 2010-08-23 21:47:40