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

イェンスが最初の質問を言ったように:

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 に答える