У меня есть странная и необъяснимая ошибка с моим подготовленным оператором SQL, он не дает тех же результатов, что и неподготовленный оператор.
Разве эти две версии не должны возвращать одинаковые результаты?
Подготовленная версия (с неправильными результатами):
sb.append(" WHERE c.deck_id=? AND c.next_date < ? AND c.next_date > 0 AND c.active > 0 AND c.deck_level=?");
...
return db.rawQuery(sb.toString(), new String[] { Long.toString(deckId)
, Long.toString(now), Long.toString(level)});
Неподготовленная версия (работает как положено с правильными результатами):
sb.append(" WHERE c.deck_id=").append(deckId)
.append(" AND c.next_date<").append(now)
.append(" AND c.next_date > 0 AND c.active > 0 AND c.deck_level=").append(level);
...
return db.rawQuery(sb.toString(), null);
Где ошибка в подготовленной версии выписки?
Обновление Я сделал дополнительные журналы для обеих версий.
Log.d(TAG, "selectionArgs1:" + Long.toString(deckId) + ""+Long.toString(now)+ ""+Long.toString(level)+ "");
Вывод: selectionArgs1:*5*1294429481330*5* (ТАК: не отображается * в источнике?)
StringBuffer d = new StringBuffer("selectionArgs2:");
d.append(deckId).append("").append(now).append("").append(level).append("");
Log.d(TAG, d.toString());
Вывод: selectionArgs2:*5*1294429481330*5*