Java sql查询语句order by中的条件是否能用一个变量代替?

大致如下publicList<Goods>selectAll(Stringrule){Connectioncon=DBOperate.getConnection();Pr... 大致如下
public List<Goods> selectAll(String rule) {
Connection con = DBOperate.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "select * from goods order by ? desc ";

ps = con.prepareStatement(sql);
ps.setString(1, rule);
rs = ps.executeQuery();
}
我这样写的时候会报错,错误如下

(com.microsoft.sqlserver.jdbc.SQLServerException: 由 ORDER BY 编号 1 标识的 SELECT 项包含一个变量,作为标识列位置的表达式的一部分。按照引用列名的表达式排序时,只允许使用变量。)
展开
 我来答
落叶l无情
2014-12-16 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1425万
展开全部
x="id" //需要按此排序的字段
String sql = "select * from goods order by "+x+" desc "; //拼接字符串即可
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
makeio
推荐于2018-04-07 · TA获得超过393个赞
知道小有建树答主
回答量:253
采纳率:54%
帮助的人:118万
展开全部
order by 字段名称 desc

而不是 值
如果rule是字段,请加引号 “rule”
追问
rule是形参,你这样说的意思是在String sql = "select * from goods order by ‘?’ desc ";

在问号那里加单引号是吗?
还是什么?
给出具体修改方法可以吗- -
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式