老师,您好,请问ORDER BY ? DESC这样写为什么不行呢?

老师,您好,请问ORDER BY ? DESC这样写为什么不行呢?

两种写法,结果却不相同,为什么呢?

第一种:http://img1.sycdn.imooc.com//climg/5b1507ea0001453416500875.jpg

第二种:http://img1.sycdn.imooc.com//climg/5b1508680001428115970839.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

此处占位符的使用场景不正确;

占位符可以用到条件语句中,例如:select * from user where id=?  此处的占位符代表是一个具体的值,可以使用占位符;

而在排序时,order by后面是一个字段,使用占位符会使得排序无效。

祝学习愉快!

  • 心纯净 提问者 #1
    非常感谢!
    2018-06-05 10:20:49
提问者 心纯净 2018-06-04 22:45:13
CREATE TABLE course(
	id INT UNSIGNED AUTO_INCREMENT KEY COMMENT '课程编号',
	name VARCHAR(20) NOT NULL COMMENT '课程名称',
	ctaegory VARCHAR(20) NOT NULL COMMENT '所属方向',
	desp VARCHAR(30) NOT NULL COMMENT '课程描述',
	createTime DATETIME NOT NULL COMMENT '创建时间'
)ENGINE=INNODB CHARACTER SET UTF8;

INSERT course VALUES(null,'Java零基础','Java','Java基础语法',NOW());
INSERT course VALUES(null,'JavaWeb','Java','Jsp和Servlet',NOW());
INSERT course VALUES(null,'前端小白','前端','HTML/CSS/JS',NOW());


  • 提问者 心纯净 #1
    使用的时jdbctest数据库
    2018-06-04 22:43:51
提问者 心纯净 2018-06-04 22:42:52
@Test
public void demo() {
    Connection con = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    try {
        con = JDBCUtils.getConnection();
        String sql = "SELECT * FROM course ORDER BY ? DESC";
        pstmt = con.prepareStatement(sql);
        pstmt.setString(1, "createTime");
        rs = pstmt.executeQuery();
        while (rs.next()) {
            int id = rs.getInt("id");
            String name = rs.getString("name");
            String category = rs.getString("category");
            String desp = rs.getString("desp");
            Timestamp createTime = rs.getTimestamp("createTime");
            System.out.println(id + " " + name + " "
            + category + " " + desp + " " + createTime);
        }

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        JDBCUtils.release(rs, pstmt, con);
    }
}

http://img1.sycdn.imooc.com//climg/5b1550530001e66d18920855.jpg

一叶知秋519 2018-06-04 18:36:52

desc是降序排列;第二种的运行出来的结果是正确的,

同学可以把你的代码贴一下,我们运行你的代码试一下~

  • 提问者 心纯净 #1
    好的,我回复在我的问答区里,麻烦您了。对了,使用第一种,调试时出现了如图的情况,也就是SELECT * FROM course ORDER BY ** NOT SPECIFIED ** DESC
    2018-06-04 22:41:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师