Android中的Sqlite奇怪的rawQuery行为

时间:2012-05-07 15:22:55

标签: android sqlite

我使用SQLiteDatabase对象的rawQuery方法。

写作时

db.rawQuery(“select * from xxx order by?desc;”,new String [] {“edit_time”});

它不会对结果进行排序。

但是当我写作

db.rawQuery(“select * from xxx order by edit_time desc;”,null);

它命令。

我做错了什么?


感谢sandis,我发现我误读了这个文件。不应该有“;”。但删除“;”似乎没有任何影响。

2 个答案:

答案 0 :(得分:2)

documentation指定"The SQL string must not be ; terminated",也许这是您问题的根源。

答案 1 :(得分:0)

正如Jens所说的第一个问题:

db.rawQuery("select * from xxx order by ? desc;", new String[] {"edit_time"}); 

变为:

select * from xxx order by 'edit_time' desc

由于我们不关心列名的SQL注入,因此您应该使用:

db.rawQuery("select * from xxx order by edit_time desc", null);

selectionArgs旨在以这种方式使用:

db.rawQuery("select * from xxx order by edit_time like ? desc", new String[] { "%" + orderBy + "%"});