Я пытаюсь выполнить относительно простую побитовую операцию запроса с SQLite на Android.Когда я использую переменные связывания, я не получаю данных, возвращаемых, когда считаю, что нужно вернуть некоторые строки.Если я жестко закодирую значение переменной связывания непосредственно в SQL, он работает просто отлично.Я думаю, что у меня где-то есть какая-то глупая проблема с синтаксисом, но я просто не вижу ее.
Так что этот код работает просто отлично:
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 иэто работает просто отлично.