Я столкнулся со странной проблемой при написании приложения для Android.
У меня особенно запутанный кусок SQL (который я сейчас нахожусь в процессе уборки), который возвращает курсор для пользовательского listadapter.
Проблема заключается в том, что я частично настраиваю свой код с помощью SQLITEMAN. Я обнаружил, что получаю правильные результаты от SQLITEMAN (как и при некоторой агрегации), но когда я запускаю его через Android, я не получаю результатов в скопированной базе данных. прямо с андроида используя DDMS.
Опять же, да, я знаю, что код грязный, но он дает результаты. Если код на самом деле является проблемой, его можно привести в порядок.
SELECT -1 as _id, 'player1|player2' as players, null as turntext, null as turnimage,30 as maxturns,19 as curturns
union
SELECT games._id,games.players,lastturn.turntext,lastturn.turnimage,games.maxturns,lastturn.curturns
FROM games
inner join (select _id,turntext,turnimage,t.gameid, tb.curturns from turns t inner join (select tb.gameid,count(tb._id) as curturns from turns tb group by tb.gameid) tb on tb.gameid = t.gameid where _id = (select max(_id)
from turns where gameid = t.gameid ) group by t.gameid) lastturn on lastturn.gameid = games._id order by games._id desc
РЕДАКТИРОВАТЬ: я переписал SQL, так что есть только 2 внутренних цикла. Не удивительно, что проблема все еще сохраняется.
После дополнительных исследований у меня появилось новое преимущество: когда я вставлял записи с кодом, приведенным ниже, я думаю, что приведение возвращаемого значения к int, хотя и приемлемое, основываясь на моих методах, могло запутать представление значений ...
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_GAMEID,gameId);
initialValues.put(KEY_TURNTEXT,text);
initialValues.put(KEY_TURNIMAGE,imageBytes);
return (int)mDb.insert(TABLE_NAME, null, initialValues);