0

我使用 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);

它命令。

我做错事情了?


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

4

2 回答 2

2

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

于 2012-05-07T15:28:16.733 回答
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 + "%"});
于 2012-05-07T15:58:53.417 回答