我在编写Android应用程序时遇到了一个奇怪的问题。
我有一个特别混乱的SQL(我正在整理过程中),它返回一个自定义listadapter的游标。
问题是通过使用SQLITEMAN调整我的代码的一部分我发现我从SQLITEMAN得到了正确的结果(因为我做了一些聚合)但是当我通过android运行它时我在我复制的数据库上没有得到任何结果直接从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);