java.sql.SQLException: '@P0' 附近有语法错误

SQL语句:

String sql = "select * FROM mybooks a," +
      "(select top ? id from" +
      "(select top ? * from mybooks where  price >= ? AND price <= ? order by id desc) b " +
      "order by id desc) c " +
      "where a.id = c.id order by c.id desc"
原因:sql不支持为select top ? 预编译

解决办法:1.换成动态拼接

String sql = "select * FROM mybooks a," +
      "(select top %s id from" +
      "(select top %s * from mybooks where  price >= ? AND price <= ? order by id desc) b " +
 "order by id desc) c " +
 "where a.id = c.id order by c.id desc";
sql = String.format(sql, 3, 3);

2.在?号加括号

String sql = "select * FROM mybooks a," +
      "(select top (?) id from" +
      "(select top (?) * from mybooks where  price >= ? AND price <= ? order by id desc) b " +
      "order by id desc) c " +
      "where a.id = c.id order by c.id desc";
原作者处:http://www.blogjava.net/jzone/articles/305388.html


你可能感兴趣的:(日常小问题)