2012-12-28 46 views
0

我的问题与android的sqlite语法有关。我有一个查询,其中我想要获取一些具有比给定关键值更大级别的关键值的数据。例如,给定的ID是134.2,并且将被提取的记录类似于这些134.2.5或134.2.98。问题是我在语法上丢失了一些东西,因此我得不到任何结果。这是我的代码。先谢谢你。sqlite中的字符串查询,android

我希望这个帮助。 SELECT * FROM TASKS WHERE FATHER_ID = FID +“。”+“%”+“。”

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK }, KEY_FATHER + " LIKE " + "'"+ id+"'"+"'"+".'"+"'" +"%'"+"'"+".'", null, null, null, null); 

回答

0

尝试

+ " LIKE " + "'" + id + ".%'" 
2

你正在构建的关键对比表达的方式更换

+ " LIKE " + "'"+ id+"'"+"'"+".'"+"'" +"%'"+"'"+".'" 

似乎过于复杂;也应该是一个查询参数,所以你不必担心引用这么多:

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK }, KEY_FATHER + " LIKE ?", new String[] { id + ".%" }, null, null, null); 
+0

非常感谢你,但我还是什么也得不到。 – user1347280

+0

也许你可以添加一个SELECT语句来检索你想要从你的数据库中获得的东西,这样我们就可以看到你想要在你的mDb查询中结束了什么。 – antlersoft

0

也许你想这样的:

mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_TITLE, 
      KEY_BODY,KEY_location , KEY_GOAL_DATE,KEY_ABSOLUTE_DATE, KEY_DATE_CURRENT ,KEY_PRIO,KEY_DONE, KEY_CATEGORY,KEY_TIME_SPEND,KEY_POSOSTO, KEY_FATHER, KEY_TODAY, KEY_NOTIFY,KEY_NUMBER_OF_DAYS, KEY_NOTICE_CHECK },KEY_FATHER + " LIKE " + "'"+ id+".%'", null, null, null, null); 
+0

谢谢你,但我仍然没有得到任何东西。唯一让我得到正确结果的方法是“'”+ id +“%'”,因为它包含了我不需要的记录。例如134.2.3.4.i我只希望离我所在的地方更远一级 – user1347280