我使用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,我发现我误读了这个文件。不应该有“;”。但删除“;”似乎没有任何影响。
答案 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 + "%"});