У меня странная и необъяснимая ошибка с моим подготовленным оператором SQL, он не дает таких же результатов, как у подготовленного оператора.
Разве эти две версии не должны давать одинаковые результаты?
Подготовленная версия (с неверными результатами):
<code>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)});
Неподготовленная версия (работает, как и ожидалось, с правильными результатами):
<code>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);
Где ошибка в подготовленной версии выписки?
Обновление
Я сделал дополнительные журналы для обеих версий.
<code>Log.d(TAG, "selectionArgs1:<em>" + Long.toString(deckId) + "</em>"+Long.toString(now)+ "<em>"+Long.toString(level)+ "</em>");
Вывод: selectionArgs1: * 5 * 1294429481330 * 5 *
(SO: не отображается * в источнике?)
<code>StringBuffer d = new StringBuffer("selectionArgs2:<em>");
d.append(deckId).append("</em>").append(now).append("<em>").append(level).append("</em>");
Log.d(TAG, d.toString());
Выход: selectionArgs2: * 5 * 1294429481330 * 5 *