PreparedStatement不返回有序的ResultSet

use*_*208 1 java jdbc prepared-statement

我遇到了一些问题,我确信这是一些愚蠢的事情.

所以我有一个类似的查询

SELECT name, id, xyz FROM table ORDER BY ?
Run Code Online (Sandbox Code Playgroud)

然后在路上设置了?做一个

ps.setString(1, "xyz");
Run Code Online (Sandbox Code Playgroud)

我在控制台中输出查询和xyz的值.当我遍历从PreparedStatement返回的ResultSet时,值的顺序不正确.它们处于返回的顺序,就像我已经关闭了ORDER BY子句一样.当我将查询和值复制/粘贴到TOAD时,它会运行并正确返回.

为什么ResultSet没有以正确的顺序返回的任何想法?

Tom*_*ine 13

数据库将查询为

SELECT name, id, xyz FROM table ORDER BY 'xyz'
Run Code Online (Sandbox Code Playgroud)

也就是说,按常量表达式排序(在这种情况下为字符串'xyz').任何订单都会满足.


Tho*_*zer 5

?对于参数,您不能使用它来插入列名.生成的语句看起来像

SELECT name, id, xyz FROM table ORDER BY 'xyz'
Run Code Online (Sandbox Code Playgroud)

以便您的条目按字符串'xyz'排序,而不是按列xyz的内容排序.